封装如何工作以及如何击败它

fpg*_*ost 6 python scrapy web-scraping incapsula

Incapsula是一个Web应用程序交付平台,可用于防止抓取。

我在Python和Scrapy中工作,发现了这一点,但它似乎已经过时了,不能与当前的Incapsula一起使用。我使用目标网站测试了Scrapy中间件,但由于中间件无法提取一些混淆的参数,所以出现了IndexErrors。

是否有可能改编该存储库,或者Incapsula现在已更改其操作模式?

我也很好奇如何将请求从chrome开发工具“复制为cURL”到我的目标页面,并且chrome响应包含用户内容,但是curl响应是“封装事件”页面。这是针对最初已清除Cookie的Chrome。

curl 'https://www.radarcupon.es/tienda/fotoprix.com' 
-H 'pragma: no-cache' -H 'dnt: 1' -H 'accept-encoding: gzip, deflate, br' 
-H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' 
-H 'upgrade-insecure-requests: 1' 
-H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/62.0.3202.94 Chrome/62.0.3202.94 Safari/537.36' 
-H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' 
-H 'cache-control: no-cache' -H 'authority: www.radarcupon.es'
 --compressed
Run Code Online (Sandbox Code Playgroud)

我期望双方的第一个请求都返回一个类似JavaScript的挑战,该挑战将设置一个cookie,但现在看来它不太起作用?

Gra*_*rus 8

Incapsula 与许多其他反抓取服务一样,使用 3 种类型的详细信息来识别网络抓取工具:

  1. IP地址元信息
  2. JavaScript 指纹识别
  3. 请求分析

为了绕过这种保护,我们需要确保这些详细信息与普通网络用户的信息相符。

IP地址

自然 Web 用户通常从住宅或移动 IP 地址进行连接,其中许多生产抓取工具部署在数据中心 IP 地址(Google 云、AWS 等)上。这三种类型有很大不同,可以通过分析知识产权数据库来确定。顾名思义:数据中心 - 商业 IP 地址,住宅 - 家庭地址,移动地址是基于蜂窝塔的移动网络(3G、4G 等)

因此,我们希望通过住宅或移动代理池来分发我们的抓取网络。

JavaScript 指纹识别

使用 JavaScript,这些服务可以分析浏览器环境并构建指纹。如果我们将浏览器自动化工具(如 Selenium、Playwright 或 Puppeteer)作为网络抓取工具运行,我们需要确保浏览器环境看起来像用户一样。

这是一个很大的主题,但一个好的开始是看看什么puppeteer-stealth插件,它将补丁应用于浏览器环境以隐藏各种细节,这些细节揭示了浏览器由脚本控制的事实。

注意:puppeteer-stealth不完整,您需要做额外的工作才能可靠地通过 Incapsula。

所以答案有点短,无法涵盖这一点,但我在我的博客《如何避免网页抓取阻塞:Javascript》上写了关于此主题的详细介绍

请求分析

最后,我们的刮刀连接方式也发挥着重要作用。连接模式可用于确定客户端是真实用户还是机器人。例如,真实用户通常以更混乱的模式浏览网站,例如进入主页、类别页面等。

隐秘的抓取工具应该会在抓取连接模式中引入一些混乱。

卷曲不会削减它

当您询问如何使用 CURL 因为 Incapsula 依赖于 JS 指纹识别时,在这种情况下您不会有太多运气。但是,有几点需要注意,可能对其他系统有帮助:

  • HTTP2/3协议将会有更高的成功率。Curl 和许多其他 http 客户端默认使用 http 1.1,而大多数实际用户流量运行 http2+ - 这是一个致命的赠品。
  • 标头值和顺序也很重要,因为真实的浏览器(Chrome、Firefox 等)具有特定的标头顺序和值。如果你的刮刀连接不同——那就是一个致命的泄露。

了解这 3 个区分机器人流量和真实人类流量的细节可以帮助我们开发更隐蔽的抓取工具。如果您想了解更多如何在不被阻止的情况下进行抓取,我在我的博客上写了更多关于这个主题的文章


Sco*_*tis 1

很难给出具体的答案,因为 Incapsula 有一个非常详细的规则引擎,可以用来阻止或质询请求。Cookie 检测和 Javascript 支持是用于识别可疑流量的两个最常见的数据点;源自客户端 IP 地址的用户代理字符串、标头和行为(每分钟请求数、AJAX 请求等)也可能导致 Incapsula 挑战流量。如果未根据站点看到的流量进行合理配置,DDoS 保护功能会积极阻止请求。