wake-up-neo.net

Wie man Incapsula mit Python umgehen kann

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>
9
parik

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

  • Verwenden Sie niemals gemeinsam genutzte Proxys für solche Projekte. Verwendung von TOR ist eine große NO
  • Verwenden Sie Chrome + Selenium + Proxy
  • Verwenden Sie Chrome mit 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 aussehen
  • Kratzen Sie nie zu schnell, verwenden Sie so viele Verzögerungen wie möglich und so viele zufällige Verzögerungen wie möglich
  • Verwenden Sie immer einen sichtbaren Browser und überwachen Sie das Captcha ständig. Lösen Sie das Captcha manuell, oder verwenden Sie ein DeathByCaptcha oder einen ähnlichen Dienst. Versuchen Sie, Captcha-Seiten nicht abzubrechen, da dies die Bot-Wahrscheinlichkeitsüberprüfung auf einen höheren Grad erhöhen kann

Dies 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 

3
Tarun Lalwani

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 .

2
nbari