Scrapy を使用し、スクレイプしようとします このサイト はIncapsulaを使用します
<meta name="robots" content="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3">
</script>
私はすでに2年前にこの問題について Question を尋ねていましたが、この方法( Incapsula-Cracker )はもう機能しません。
私は理解しようとしましたIncapsulaの仕組みそれをバイパスするためにこれを試しました
def start_requests(self):
yield Request('https://courses-en-ligne.carrefour.fr', cookies={'store': 92}, dont_filter=True, callback = self.init_shop)
def init_shop(self,response) :
result_content = response.body
RE_ENCODED_FUNCTION = re.compile('var b="(.*?)"', re.DOTALL)
RE_INCAPSULA = re.compile('(_Incapsula_Resource\?SWHANEDL=.*?)"')
INCAPSULA_URL = 'https://courses-en-ligne.carrefour.fr/%s'
encoded_func = RE_ENCODED_FUNCTION.search(result_content).group(1)
decoded_func = ''.join([chr(int(encoded_func[i:i+2], 16)) for i in xrange(0, len(encoded_func), 2)])
incapsula_params = RE_INCAPSULA.search(decoded_func).group(1)
incap_url = INCAPSULA_URL % incapsula_params
yield Request(incap_url)
def parse(self):
print response.body
しかし、私は RE-Captcha Page にリダイレクトされます
<html style="height:100%">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<meta name="format-detection" content="telephone=no">
<meta name="viewport" content="initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
</head>
<body style="margin:0px;height:100%">
<iframe src="/_Incapsula_Resource?CWUDNSAI=27&xinfo=3-10784678-0%200NNN%20RT%281523525225370%20394%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%284%2c316%2c0%29%20U10000&incident_id=459000960022408474-41333502566401539&edet=12&cinfo=04000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 459000960022408474-41333502566401539
</iframe>
</body>
</html>
したがって、まず第一に、そのような問題に対する絶対確実な解決策はありません。私は実際のユーザーとして、StackOverflowで回答する際にキャプチャを解決する必要があります。つまり、ボットは間違いなくキャプチャを取得します。
今、キャプチャの可能性を減らすために私が試し、従ういくつかのルールがあります
TOR
の使用は大きなNO
ですChrome
+ Selenium
+ Proxy
を使用しますexisting profile
。私は、さまざまなWebサイトの閲覧履歴、他の多くのサイトやトラッカーからのCookieを持ち、1か月前に遡るプロファイルを持つことを好みます。ユーザー/ボットの違いの評価がどのように行われるかはわかりません。本当のユーザーのようになりたいこれはネコとネズミのゲームで、相手が防御として何を持っているかわからない。素敵で簡単にプレイしよう
これは最良の答えではありませんが、ウェブスクレイピングを行うのが簡単ではない理由を理解するためにいくつかのポイントを与えるだけで、主にCDNを持っている場合です。
最初に、あなたが何と戦うかをチェックするのが良いかもしれません [〜#〜] waf [〜#〜] & Bot Mitigation 。
次に、より多くのアイデアを得るために、これは良い話です: 攻撃者がCDNを回避してオリジンを攻撃する方法
これは、Webスクレイピングを実行できないことを意味するものではありません。ここでの問題は時間/速度に減少します。キャプチャをトリガーする変更は、高速に試行するほど速くなり、最悪の場合は完全にブロックされます。
リクエストごとに異なるIPを使用するなど、複数のアプローチがあります。 Python Torを使用してリクエストを作成 、ユーザーエージェントを変更するなど)。あなたが見つける必要があるかもしれない定義されたタイムアウトとクエリパターンの。