Ich benutze Scrapy und versuche, diese Site zu kratzen die Incapsula verwendet.
<meta name="robots" content="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3">
</script>
Ich hatte bereits vor 2 Jahren ein Question zu diesem Problem gefragt, aber diese Methode ( Incapsula-Cracker ) funktioniert nicht mehr.
Ich habe versucht zu verstehen, wie Incapsula funktioniert und ich habe dies versucht, um es zu umgehen
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
Ich werde aber weitergeleitet auf 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>
Zuallererst gibt es keine narrensicheren Lösungen für solche Probleme. Als tatsächlicher Benutzer muss ich bei der Beantwortung von StackOverflow das Captcha lösen. Was bedeutet, dass ein Bot definitiv Captchas bekommt.
Nun gibt es wenige Regeln, die ich versuche und befolge, um die Chancen eines Captcha zu verringern
TOR
ist eine große NO
Chrome
+ Selenium
+ Proxy
existing profile
. Ich bevorzuge Profile mit Browsing-Verlauf mit verschiedenen Websites, Cookies von vielen anderen Websites und Trackern und einen Monat zurück. Sie wissen nicht, wie die Bewertung eines Benutzer-/Bot-Unterschieds erfolgen kann. Sie möchten also eher wie ein echter Benutzer aussehenDies ist ein Katz und Maus-Spiel, bei dem Sie nicht wissen, was die andere Partei als Verteidigung hat. Also versuchst du, Nice and easy zu spielen
Dies ist nicht die beste Antwort, aber nur einige Punkte zu geben, um zu verstehen, warum es nicht so einfach ist, Web-Scraping durchzuführen, und vor allem, wenn man ein CDN vorn hat.
Erstens, vielleicht ist es gut zu überprüfen, gegen was Sie kämpfen werden, WAF & Bot Mitigation .
Um weitere Ideen zu erhalten, ist dies ein gutes Gespräch: Wie Angreifer CDNs in Angriff nehmen, um Herkunft zu attackieren
Dies bedeutet nicht, dass kein Web-Scraping möglich ist. Das Problem wird jetzt auf Zeit/Geschwindigkeit reduziert. Je schneller Sie etwas hoch versuchen, desto schneller werden die Captchas-Änderungen ausgelöst, und im schlimmsten Fall werden sie sogar vollständig blockiert.
Es gibt verschiedene Ansätze, z. B. unterschiedliche IP-Adressen für Anforderungen: Anfragen mit Python über Tor erstellen , Benutzeragenten ändern usw. Die meisten davon sind jedoch an eine Reihe von definierten Timeouts und Abfragemustern gebunden, die Sie möglicherweise finden müssen .