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つの応答しか送信しないので、レート制限やダウンロードの遅延には対応できません。