Как обойти Инкапсула с Python
Я использую Scrapy и пытаюсь почистить этот сайт, который использует Incapsula
<meta name="robots" content="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3">
</script>
Я уже задавал вопрос об этой проблеме 2 года назад, но этот метод ( 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
<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>
2 ответа
Поэтому, прежде всего, нет надежных решений таких проблем. Мне, как фактическому пользователю, приходится сталкиваться с тем, что при проверке ответа на Stackru нужно разрешить код проверки. Что означает, что бот определенно получит капчу.
Сейчас есть несколько правил, которым я стараюсь следовать, чтобы уменьшить вероятность капчи
- Никогда не используйте общие прокси для таких проектов. С помощью
TOR
большойNO
- использование
Chrome
+Selenium
+Proxy
- Используйте Chrome с
existing profile
, Я предпочитаю иметь профили, которые имеют историю просмотров с разных веб-сайтов, куки-файлы со многих других сайтов и трекеров и уходят в прошлое. Вы не знаете, как может произойти оценка разницы между пользователем и ботом. Итак, вы хотите выглядеть как настоящий пользователь - Никогда не ломайте с высокой скоростью, используйте как можно больше задержек и случайных задержек, насколько это возможно
- Всегда используйте видимый браузер и следите за состоянием капчи, при появлении капчи вручную решите капчу или используйте DeathByCaptcha или подобный сервис. Старайтесь не прерывать страницы с картинками, так как это может повысить вероятность проверки вашего бота до более высокого уровня
Это игра в кошки-мышки, в которой вы не знаете, что другая сторона защищает. Таким образом, вы пытаетесь играть красиво и легко
Это не лучший ответ, но просто дать несколько моментов, чтобы понять, почему не так просто выполнять очистку веб-страниц и, в основном, при наличии CDN впереди.
Во-первых, может быть, стоит проверить, с чем вы будете бороться, WAF & Bot Mitigation.
Тогда, чтобы получить больше идей, это хороший разговор: как злоумышленники обходят CDN для атаки на источник
Теперь, это не значит, что это невозможно сделать веб-очисткой, проблема здесь теперь сводится к времени / скорости, чем быстрее вы пытаетесь что-то высокое, тем изменения, которые вы запускаете капчи, и в худшем случае даже полностью блокируются.
Существует несколько подходов, таких как использование разных IP-адресов для запросов: создание запросов с использованием Python поверх Tor, смена пользовательского агента и т. Д. Но большинство из них привязаны к набору определенных таймаутов и шаблонов запросов, которые вам, возможно, понадобится найти.