web-dev-qa-db-fra.com

Comment contourner Incapsula avec Python

J'utilise Scrapy et j'essaie de gratter ce site qui utilise Incapsula -

<meta name="robots" content="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3">
</script>

J'avais déjà demandé une Question à propos de ce problème il y a 2 ans, mais cette méthode ( Incapsula-Cracker ) ne fonctionne plus.

J'ai essayé de comprendre Comment Incapsula fonctionne et j'ai essayé ceci pour le contourner

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 

Mais je suis redirigé vers 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

Donc, tout d’abord, il n’ya pas de solution à toute épreuve à de tels problèmes. En tant qu'utilisateur final, je dois résoudre captcha en répondant à StackOverflow. Ce qui signifie qu'un bot obtiendra certainement des captchas.

Maintenant, il y a peu de règles que j'essaie de suivre pour diminuer les chances d'un captcha

  • Ne jamais utiliser des mandataires partagés pour de tels projets. Utiliser TOR est un grand NO
  • Utilisez Chrome + Selenium + Proxy
  • Utilisez Chrome avec existing profile. Je préfère avoir des profils qui ont un historique de navigation avec différents sites Web, des cookies de nombreux autres sites et des trackers et remontant un mois. Vous ne savez pas comment l'évaluation d'une différence utilisateur/bot peut se produire. Donc, vous voulez ressembler davantage à un véritable utilisateur
  • Ne grattez jamais à des taux rapides, utilisez autant de retards que possible et de retards aléatoires autant que possible
  • Utilisez toujours un navigateur visible et surveillez toujours le captcha. Lors de son apparence, résolvez-le manuellement ou utilisez un service DeathByCaptcha ou similaire. Essayez de ne pas abandonner les pages captcha car cela pourrait augmenter la probabilité de votre vérification de bot.

C'est un jeu de chat et de souris, où vous ne savez pas ce que l'autre partie a comme défense. Donc, vous essayez de jouer gentil et facile 

3
Tarun Lalwani

Ce n’est pas la meilleure des réponses mais juste quelques indications pour comprendre pourquoi il n’est pas si facile de faire du scraping Web et surtout lorsqu’un CDN se présente devant.

Tout d’abord, il serait peut-être bon de vérifier contre quoi vous allez vous battre, WAF & Bot Mitigation .

Alors pour avoir plus d’idées, c’est une bonne conversation: Comment les attaquants contournent-ils les CDN pour attaquer leur origine

Maintenant, cela ne signifie pas qu'il n'est pas possible de faire du scraping Web, le problème ici se réduit maintenant à temps/vitesse, plus vite vous essayez quelque chose de haut, les changements que vous déclenchez les captchas et dans le pire des cas même bloqués complètement.

Il existe plusieurs approches, telles que l’utilisation d’adresses IP différentes selon les requêtes: Envoi de requêtes à l’aide de Python via Tor , modification de l’agent utilisateur, etc. .

2
nbari