2017-01-27 25 views
0

this web form(サンプルID:15740175)の結果を削り取ろうとしています。実際には、フォームと同じように、ScrapyからPOSTリクエストを送信しています。このサイトは私がスクレーパーであることをどのように知っていますか?

私はブロックされていないIPから作業しています - 私はこのマシンのFirefoxから正常にリクエストできます。 JavaScriptとCookieを無効にしてFirefoxを使用しているため、JSやCookieのどちらでも結果を返す必要はありません。

これは私のScrapyコードです:

allowed_domains = ['eservices.landregistry.gov.uk'] 
start_urls = [] 
_FORM_URL = "http://eservices.landregistry.gov.uk/www/wps/portal/!ut/p/b1/" \ 
      "hc7LDoIwEAXQb-ELOrQFu60EgSgg8hDYEFQ0GHksCIZ-veBODTK7Sc69MyhFMU" \ 
      "rrvC9veVc2df6Y9lTNCGZUlik2GVFXYCkbg8iBQoCSESR_gCEv5Y8oBpr5d9ba" \ 
      "QxfvhNYHd-ENjtCxLTg44vy0ndP-Eh3CNefGoLMa-UU95tKvanfDwSJrd2sQDw" \ 
      "OoP-DzNsMLYPr9DWBmOCDHbKoCJSNbzfWwiKK2CvvyoF81LkkvDLGUgw!!/dl4" \ 
      "/d5/L0lDU0lKSmdwcGlRb0tVUW9LVVEhL29Gb2dBRUlRaGpFQ1VJZ0FJQUl5Rk" \ 
      "FNaHdVaFM0SldsYTRvIS80RzNhRDJnanZ5aERVd3BNaFFqVW81Q2pHcHhBL1o3" \ 
      "XzMyODQxMTQySDgzNjcwSTVGRzMxVDUzOFY0LzAvMjc0MzY5MTc0Njk2L3NwZl" \ 
      "9BY3Rpb25OYW1lL3NwZl9BY3Rpb25MaXN0ZW5lci9zcGZfc3RydXRzQWN0aW9uL" \ 
      "yEyZlFEU2VhcmNoLmRv/" 

def start_requests(self): 

    settings = get_project_settings() 
    ids = ['15740175'] 
    for i, id in enumerate(ids): 
     yield FormRequest(
      url=self._FORM_URL, 
      formdata={ 
       'polygonId': id, 
       'enquiryType': 'lrInspireId', 
      }, 
      headers={ 
       'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:43.0) Gecko/20100101 Firefox/43.0", 
       'Accept-Language': 'en-GB,en;q=0.5', ' 
       'Referer': '' 
      } 
     ) 

def parse(self, response): 
    # do parsing here 

しかし、ログに、私はちょうど403応答を参照してください。 (NB、サイトのrobots.txtはスクレイピングを禁止していません)

私はCharlesを使ってScrapyから送信されたリクエストを検査し、すべてのリクエストヘッダー(User-Agentを含む)は送信されたリクエストヘッダーと同じに見えます私はFirefoxでリクエストを行い、200を返す。

おそらくサイトは私がスクレーパーであり、私をブロックしていることを知っていますが、それはどのようにわかりますか?私は真に神秘的だ。私は1つの応答しか送信しないので、レート制限やダウンロードの遅延には対応できません。

答えて

0

このサイトは、CSRF(クロスサイトリクエスト偽造)から保護されている可能性があります。また、アクションURLは、再発攻撃を防ぐsession tokenのように見えます。しかしこすることは違法であることと、このサイト/組織の所有者に確認して、このような方法でこのサイトにアクセスする前に

0

だけで開いているページのソースHTMLブラウザで、それを数回更新することができます - あなたはそのフォームアクションURLは、すべてを変えて表示されます時間がかかるので、ハードコードされたまま使用しようとすると動的なURLになります。最初にフォームを含むHTMLページを取得し、現在のフォームアクションURLを使用してフォームデータを送信する必要があります。

関連する問題