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>
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
TOR
est un grand NO
Chrome
+ Selenium
+ Proxy
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 utilisateurC'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
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. .