Skip to main content

通过抓取 Crunchbase 公共数据来测试最新的 PerimeterX 版本

 PerimeterX(前段时间被 Human Security 收购)是最重要的反爬虫程序解决方案之一,与 Cloudflare、Datadome 和 Kasada 一起被 Forrester 在其行业报告中认可

在深入研究我所研究的解决方案的技术细节之前,让我们尝试更多地了解 PerimeterX

什么是 PerimeterX,您如何检测它?

如前所述,PerimeterX Bot Defender(又名 HUMAN Bot Defender)是最著名的反机器人解决方案之一,被 Crunchbase、Zillow、SSense 等网站使用。

通过浏览文档,我们可以了解它的架构由三个不同的组件组成:

  1. HUMAN Sensor:插入到您网站上的 JavaScript 代码段,用于将 HUMAN Sensor 加载到您的浏览器。Sensor 收集和发送数据以分析用户和设备行为以及网络活动。它评估设备和应用程序的真实性,并跟踪用户行为和交互。

  2. HUMAN Detector:一个基于云的组件,使用机器学习和行为分析实时评估传感器和执行器数据,以创建风险评分。此风险评分可识别用户是否为恶意用户,并以安全加密的令牌发送回用户的设备。

  3. HUMAN Enforcer:安装在您选择的 Web 应用程序、负载均衡器或 CDN 上的轻量级模块。它负责 HUMAN 解决方案的实施功能。

每个安装都可以配置不同的安全层和选项。

根据我的经验,最常见的启用选项之一是 Human Challenge,即 PerimeterX 典型的大“按住按钮”。

作为替代方案,可以在网站上使用 Google ReCAPTCHA。

在这两种情况下,PerimeterX bot Defender 都会向浏览器发出无形的挑战,以检测爬虫配置或行为中的任何危险信号。

如果网站需要在范围的有限部分(例如一些稀有商品或结帐流程)上提供额外保护,则可以激活一个更强大的机器人检测系统,称为 Hype Sale

在这种情况下,使用更多资源消耗(且解决速度较慢)的挑战来检测机器人,这也是为什么这种方法不能应用于整个网站的原因,除非对用户体验进行严重惩罚。

我们如何使用 PerimeterX 检测网站?

与往常一样,最简单的方法是使用 Wappalyzer 浏览器扩展,即使应该始终仔细检查其结果,因为它们的数据库可能无法更新。

检测 PerimeterX 非常简单,既可以查看网站的 cookie ,也可以查看它进行的网络调用。

始终来自 PerimeterX 文档网站,这是您应该在使用它的网站上看到的 cookie 列表。

另一种方法,稍微困难一些,是在开发人员的工具中打开 network 选项卡,并查找对 PerimeterX 相关域的请求,例如:

perimeterx.net
px-cdn.net
px-cloud.net
pxchk.net
px-client.net

如下面的真实案例

现在我们已经了解了如何检测 PerimeterX,让我们了解如何绕过它来抓取公共数据。

使用浏览器进行首次测试

让我们寻找一个仅受 Perimeterix 3 保护的网站,这样我们就可以确定我们的解决方案。

理想情况下,我们应该获得 _px3 cookie,并且不应安装其他反机器人软件。

经过一番搜索,设计的目标网站被选中了:Crunchbase!

由于网站有一个开放部分,然后在登录页面后面有更多内容,因此我们的测试范围将仅是可用的公共信息,无需登录。我强烈建议您不要使用这些(或其他)技术来抓取付费数据,否则您可能会遇到与违反服务条款和知识产权相关的问题。

鉴于这些应有的前提,让我们研究一下简单地以隐身模式浏览网站可以做什么,什么不能。

第一个测试包括以隐身模式直接从浏览器打开公司页面:例如,我们可以打开 Databoutique.com 页面,但我们被 Human Challenge 阻止了。

因此,第二个测试是打开 Crunchbase 主页,然后打开 Databoutique 页面。

在这种情况下,我们成功了!

当我们创建爬虫时,我们必须考虑到我们不能启动一个全新的浏览器会话并直接进入 Crunchbase 公司简介页面,但我们至少应该在之前打开主页(好吧,剧透:我们会看到这还不够)。

什么不起作用

我已经尝试了最简单的方法,所以使用 Scrapy spider(也添加了 Scrapy_impersonate 包)我尝试打开 Google,然后是 Crunchbase 主页,然后是公司页面,但没有成功。

	def start_requests(self):
		url='https://www.google.com/'
		yield Request(url, callback=self.get_home_page, headers=self.HEADER, meta={'impersonate': 'chrome110'}, dont_filter=True)
	
	def get_home_page(self, response):
		url='https://www.crunchbase.com/'
		yield Request(url, callback=self.read_company_page, headers=self.HEADER, meta={'impersonate': 'chrome110'}, dont_filter=True)


	def read_company_page(self, response):
		url='https://www.crunchbase.com/organization/luma-ai'
		yield Request(url, callback=self.end_test, headers=self.HEADER, meta={'impersonate': 'chrome110'}, dont_filter=True)
	
	def end_test(self, response):
		print("Test ended")
	

除非您使用带有 JS 渲染的解阻器,否则您将无法使用简单的 Scrapy 抓取工具绕过网站带来的挑战。我们需要像 Playwright 这样的浏览器自动化工具。


与往常一样,如果您想查看代码,可以访问 GitHub 存储库,可供付费读者使用。您可以在文件夹 56.PERIMETERX3 中找到此示例

GitHub 存储库

如果您是其中之一但无法访问它,请写信给我 pier@thewebscraping.club 以获取它。


我第一次在本地计算机上尝试使用 Playwright

我尝试的第一件事是使用我默认的 Playwright 配置,直接从其 URL 加载 Crunchbase 公司页面。

def run_chrome(playwright):
	CHROMIUM_ARGS= [
			'--no-first-run',
			'--disable-blink-features=AutomationControlled',
			'--start-maximized'
		  ]
	# Get the screen dimensions
	
	browser = playwright.chromium.launch(channel="chrome", headless=False,slow_mo=200, args=CHROMIUM_ARGS,ignore_default_args=["--enable-automation"])	
	context = browser.new_context(
		no_viewport=True
		)
        page = context.new_page()
        page.goto('https://www.crunchbase.com/organization/databoutique-com', wait_until="commit")

你猜怎么着?

再次按住!

这不是指纹的问题,因为我是从自己的 Mac 启动我的抓取工具,也不是 IP 问题,因为我在家里,使用一台干净的 Mac。

那么,问题可能是什么呢?

然后,我想起了使用浏览器测试网站时的行为。

我在本地计算机上第二次尝试使用 Playwright

即使使用常规浏览器,如果实例是新的(在我的情况下是隐身模式),我们也无法直接访问公司页面。

我刚刚稍微修改了我的抓取工具,按顺序打开:Google 主页、Crunchbase 主页,然后才打开公司页面。而且它正在发挥作用!

您可以在存储库中文件test_local.py文件夹 56.PERIMETERX3 中找到该脚本

但是,在 AWS 计算机上运行时,此基本脚本是否足够?

我的第三次尝试:AWS 上的 Playwright

在对 AWS 测试进行编码之前,让我们研究一下从 AWS 机器浏览网站时网站的行为,重新创建与爬虫相同的请求序列。

使用 Chrome,我可以打开 Google,但在加载 Crunchbase 主页时被 HUMAN 质询阻止。无论如何,我都尝试加载公司页面,令我惊讶的是,它们被正确呈现了。

这些事实使我得出两个考虑:

  • 至少对于 Crunchbase 来说,不需要任何代理,因为甚至可以从 AWS IP 获得公共数据

  • 主页上有一种指纹检查,但公司的主页上没有。

作为对这一理论的证实,本地爬虫也可以在 AWS 上运行,显示 HUMAN 质询而不是主页,但随后能够加载公司的质询。

然后,我将浏览器从 Google 切换到 Brave,它有一些机制可以混淆其部分指纹,并再次测试了爬虫(文件 test_aws.py)。

只需这样做,即使是主页也能正确加载,因此切换到 Brave 就足以绕过这个挑战。

考虑到 Brave 没有掩盖最基本的危险信号,比如 WebGL 渲染器或音频/视频设备的数量,至少在 Crunchbase 上我们可以说浏览器指纹的控制并没有那么严格。

最后的考虑

从 Crunchbase 上的 PerimeterX 安装中,我们可以了解到:

  • 我们需要一个浏览器自动化工具来完成 JS 挑战

  • 数据中心 IP 上的过滤器并不总是处于活动状态,因为在这种情况下,我们不需要任何代理

  • 对 Scraper 进行的行为分析可能非常基本

  • 很少有浏览器 API 用于检测爬虫,即使是最常见的 API (如 webGL 渲染器和音频/视频设备的数量)也是如此。

这并不意味着每个网站的行为都相同。过滤器和检测规则可以由网站所有者自定义,从而使解决方案或多或少有效。


Web Scraping 炉边谈话

我正在准备一组名为 The Web Scraping Fireside Chat的视频,我将在其中采访 Web 抓取领域的关键人物。我打算揭示网络抓取的几个不同观点和方面。

作为付费读者,您将有机会参加录制会议并提出您的问题。

以下是未来几周已确认电话会议的议程:

您将通过邮件或 Discord 服务器上的频道 #the-web-scraping-fireside-chat 接收更新,仅对付费读者可见。

Comments

Popular posts from this blog

10 Best Web Scraping Tools in 2025

Have you ever considered the methods used by businesses to collect large amounts of data for market research, price monitoring, sentiment analysis and lead generation? The answer is web scraping. Web scraping tools extract data from digital channels and transform it into easily readable information that can be analysed and manipulated. This information is crucial for businesses to target prospects and customers with relevant messages. However, web scraping is not without its challenges. It is becoming increasingly common for websites to employ sophisticated anti-scraping measures in order to block data extraction. It is therefore essential to select the appropriate tool for the task in hand. It is important to note that all local data protection and data usage laws must be adhered to. Use web scraping for legitimate purposes and contribute to making the Internet a less spammy place for all of us. We have compiled a list of the ten most suitable web scraping tools, highlighting their re...

如何创建用于抓取 Telegram 频道的机器人

近年来,Telegram 已成为最受欢迎的通信、社区建设和共享内容平台之一。其独特的公共频道、私人群组和机器人结构使其成为研究人员、营销人员和开发人员的宝贵数据源。 我个人参加了几个 Telegram 群组,有些只是为了好玩,比如 Matched Betting 群组(不,我不这样做,我只是对它背后的数学感到好奇)到本地和全球新闻频道。 在本文中,我们将介绍抓取 Telegram 的基本要素,从设置您的第一个抓取工具到提取公共群组中的消息,再到检索其成员的信息。 寻找最有效的网站抓取方法是我们在咨询任务中提供的服务之一,此外还有旨在提高抓取操作的成本效率和可扩展性的项目。想了解更多?让我们取得联系。 为什么选择 Scrape Telegram? Telegram 是公开可用数据的宝库。您可以倾听社区中发生的事情,以了解 品牌如何被感知或用于 OSINT 目的,甚至可以为您的 AI 模型收集数据。 在开始之前,请记住,抓取 Telegram 需要明确的道德和法律框架。坚持使用可公开访问的数据并遵守平台的规则。 电报标志 了解 Telegram 的生态系统 在开始编写我们的爬虫之前,了解 Telegram 的结构至关重要: 公共频道: 对拥有 Telegram 帐户的任何人开放。它们主要用于广播消息。 公共群组: 成员可以在其中发布消息的讨论交互式空间。 私人频道/组: 访问需要邀请或批准。未经同意抓取这些是不道德的,并且可能是非法的。 机器人: 可以使用 Telegram 的 Bot API 以编程方式与之交互的自动化帐户。 本文将重点介绍如何抓取合法访问的公共频道和群组,尤其是在您不存储个人数据的情况下。 抓取电报的工具和技术 要抓取 Telegram,您有多种工具可供选择: 电报 API :  Telegram 提供了一个官方 API,允许您以编程方式与其平台进行交互。这是最可靠和可扩展的抓取方法。 Telethon : 一个 Python 库,可简化与 Telegram API 的交互。 Pyrogram : 另一个类似于 Telethon 的 Python 库,但具有一些附加功能。 BeautifulSoup/Selenium: 这些用于抓取 Telegram 的 Web 界面,但它们的效率较低且更容易出现自动化块问题。 我们将重点介绍如何将 Tele...

2025年10种最佳网络爬虫

  您是否考虑过企业使用方法来收集大量数据以进行市场研究、价格监控、情绪分析和潜在客户生成? 答案是网络抓取。Web 抓取工具从数字渠道中提取数据并将其转换为易于阅读的信息,以供分析和操作。这些信息对于企业向潜在客户和客户提供相关信息至关重要。 然而,网络抓取并非没有挑战。网站采用复杂的反抓取措施来阻止数据提取变得越来越普遍。因此,为手头的任务选择合适的工具至关重要。 请务必注意,必须遵守所有当地数据保护和数据使用法律。将 Web 抓取用于合法目的,并有助于使 Internet 成为我们所有人的垃圾邮件较少的地方。 我们编制了一份十种最合适的网络抓取工具列表,突出了它们各自的优缺点,以帮助您选择最适合您需求的工具。🚀 选择网络抓取工具时的主要考虑因素是什么? 最有效的网络抓取工具是那些能够适应不断变化的数字环境的工具。在我们继续列出前 10 名之前,重要的是要强调一些需要寻找的关键功能。 易用性: 是任何数据提取工具的关键考虑因素。 在方法方面,有两个主要选项:无代码或可视化抓取。提供直观界面并专为点击式数据提取而设计的工具更适合初学者和非技术用户。 低代码: 对于更有经验的用户,允许通过编码进行灵活的 Web 爬虫设置和爬虫 API 自定义的框架可能更可取。 静态与动态: 该工具应该能够处理使用 JavaScript 或 AJAX 构建的网站,其中内容是动态加载的。 数据结构提取:  该工具应该能够以结构化的 Excel 格式(如 CSV)或原始 HTML 格式提取数据。 它还应该具有可扩展性并表现良好。 它应该能够使用云服务。基于云的数据抓取工具提供强大的基础设施和可扩展性,使其成为大型项目的理想选择。 多线程或并发: 该工具应该能够同时抓取多个页面,从而加快数据采集速度。 数据处理和存储:  虽然提取正确的数据是关键步骤,但这只是成功的一半。提供数据清理、转换和结构化功能的工具对于简化数据管理非常宝贵。 提供云存储的平台允许用户在线存储来自其 Web 抓取工具的所有数据,从而为数据提供集中且安全的数据存储库。这允许用户远程访问数据,从而降低数据存储成本。 其他注意事项:  为避免网站阻塞,建议使用提供轮换 IP 地址的工具。 无头浏览器:  这些是没有图形用户界面的 Web 浏览器,允许您模拟和自动化 Web ...