爬行网络对于公共数据收集至关重要。 这些数据随后用于改进业务和营销策略。 对于那些不知道如何在不被阻止的情况下抓取网站的人来说,在抓取数据时被列入黑名单是一个常见问题。 我们收集了一系列在爬行网络时保持隐藏的提示。

首先,网页检测 网络爬虫 和工具,检查他们的 IP 地址、用户代理、浏览器参数和一般行为。 如果该网站发现它可疑,您会收到验证码。 然后最终,由于检测到您的爬虫,您的请求被阻止。

到过那里? 需要一些实用的匿名抓取技术吗? 你是在正确的地方! 让我们开始!

关于网络爬行的一些知识

网络爬行本质上是围绕对互联网上或特定数据存储库中找到的信息进行编目的过程。 这项任务是由网络爬虫(通常称为“蜘蛛”)执行的,它们有条不紊地浏览万维网以索引可用信息。

网络爬行的一个主要例子是由流行的网络浏览器(如 Google、Yahoo 或 Bing)执行的操作。 这些浏览器系统地访问一个又一个网站,并仔细索引这些网页中包含的所有内容。

从商业角度来看,任何优先考虑信息索引而不是数据提取的与网络相关的尝试都属于网络爬行的范畴。

匿名网络爬行的 11 个秘密技巧

让我们深入探讨 匿名网络爬行,寻找最佳技术和隐私提示,以确保您在爬行时保持隐藏。

我们收集了一些非常令人惊叹的爬虫隐私提示,以保护您的身份、尊重网站政策以及以合乎道德和匿名的方式进行爬行:

1.让爬行变慢

IP 地址在特定时间可以在网站上执行的操作数量有限。 当人类访问网页时,速度低于网络爬行的速度是可以理解的。 为了在爬行时保持隐藏并降低被阻止的风险,您应该放慢爬行速度。 例如,您可以在请求之间添加随机中断或在执行特定操作之前启动等待命令。

网页抓取 机器人获取数据的速度非常快,但站点很容易检测到您的爬虫,因为人类无法快速浏览。 你爬得越快,对每个人来说就越糟糕。 如果一个网站收到太多请求,那么它可以处理它可能会变得反应迟钝。 通过模仿人类行为让您的蜘蛛看起来真实。 在请求之间放置一些随机的程序化睡眠调用,在抓取少量页面后添加一些延迟,并尽可能选择最少的并发请求数。 理想情况下,在点击之间放置 10-20 秒的延迟,不要给网站带来太多负载,从而很好地对待网站。

2.避免图像抓取

图像是数据量大的对象,通常可以受到版权保护。 它不仅需要额外的带宽和存储空间,而且侵犯他人权利的风险也更高。
此外,它们通常隐藏在“延迟加载”之后的 JavaScript 元素中,这将显着增加数据获取过程的复杂性并减慢网络爬虫本身的速度。 因此,您也必须避免使用 JavaScript。

3。 用一个 Crawling API

爬行基地 Crawling API 通过自动化大多数导致头痛的事情来提供安心。 您可以自行完成所有操作,也可以根据需要使用 API 进行爬行。

毫无疑问,这是最好的爬虫隐私提示之一。我们的 Crawling API 保护您的网络爬虫免受阻止请求、代理失败、IP 泄漏、浏览器崩溃和 CAPTCHA 的影响。

现在,我们将了解如何使用 Python 3 来抓取 Walmart。 要开始运行脚本,我们首先需要收集一些信息,例如:

  1. 这款 Crawling API 网址 https://api.crawlbase.com
  2. 您的 Crawlbase 令牌
  3. 沃尔玛 URL(在我们的案例中为清仓大甩卖)

然后我们需要导入一些相关的模块。

1
2
3
 urllib.请求 进口 打开网址
urllib.parse 进口 报价加号
进口 JSON

现在我们已经导入了模块,甚至收集了相关信息,我们需要传递用于抓取的 URL,带有一些参数(如令牌)的抓取 API 来满足要求。

1
2
3
网址 = 报价加号('https://www.walmart.com/browse/home/4044?cat_id=4044&facet=special_offers%3AClearance')

处理程序 = urlopen('https://api.crawlbase.com/?token=YOUR_TOKEN&format=json&url=' + 网址)

完整的代码看起来像这样,我们将格式化最终结果看起来很漂亮。

1
2
3
4
5
6
7
8
9
10
 urllib.请求 进口 打开网址
urllib.parse 进口 报价加号
进口 JSON

网址 = 报价加号('https://www.walmart.com/browse/home/4044?cat_id=4044&facet=special_offers%3AClearance')

处理程序 = urlopen('https://api.crawlbase.com/?token=YOUR_TOKEN&format=json&url=' + 网址)

parsed_json = json.loads(handler.read())
打印(解析_json ['身体'])

当您按下 Control + F10 键(在 Windows 上)时,最终输出将显示在输出面板中。

JSON回应

我们还有一个可用的 Python 库 你可以用在。

4. 尊重 Robots.txt 文件

首先你要了解什么是robots.txt文件,它的机制是什么。 robots.txt 文件位于网站的根目录中。 它设置了抓取网站的哪些部分不应该被抓取的规则,它可以被抓取的频率。 有些网站不允许任何人抓取它们。 因此,基本上,它会告诉搜索引擎爬虫,爬虫可以或不可以从您的网站请求哪些页面或文件。 被编程为遵循 robots.txt 上设置的规则的机器人将默认遵循这些规则并检索数据。 这主要用于避免任何网站的请求超载。

例如,此 robots.txt 指示所有搜索引擎机器人不要为网站的任何内容编制索引。 这是通过禁止您网站的根 / 来定义的。

用户代理:*
禁止:/

您仍然可以找到 robots.txt 文件以仅在某些情况下允许 Bingbot 抓取数据。 相比之下,所有其他机器人都被禁止提取任何数据。 尽管如此,由于这是由网站所有者决定的,因此您无法避免此规则。

您还应该注意,当网站所有者找不到停止在其网站上爬行的方法时,他们只是对所有链接实施验证码和/或文本消息验证,这肯定会在访问链接时打扰任何人或机器人。 但是,如果您的理由是合法的,您仍然可以继续这样做。

5.提防蜜罐陷阱

已安装的蜜罐是 HTML 代码中的链接。 这些链接对普通用户是不可见的,但网络爬虫可以检测到它们。 蜜罐用于识别和阻止网络爬虫,因为只有机器人会跟随该链接。 蜜罐是为引诱黑客并检测任何试图获取信息的黑客攻击而设置的系统。

一些检测蜘蛛的蜜罐链接将具有 CSS 样式“显示:无”或伪装的颜色以与页面的背景颜色混合。 这种检测显然并不容易,需要大量的编程工作才能以正确的方式完成; 这就是为什么这种技术不常用的原因。

6. 避免会话 URL 陷阱

会话仅用于存储本次访问的访问者数据。 大多数框架都使用会话。 每个会话通常都会获得一个唯一的 ID(示例中的 12345zxcv: “https://www.example.com/?session=12345zxcv“)。 众所周知,会话数据存储在 cookie 中。 如果由于服务器配置错误等原因而未将会话数据存储在 cookie 中,则会出现会话 ID。

来自爬虫的每次访问都构成一次“新访问”并获得一个新的会话 ID。 抓取两次的同一个 URL 将获得 2 个不同的会话 ID 和 2 个不同的 URL。 每次爬虫爬取页面时,所有具有新会话 ID 的链接都会看起来像新页面,从而导致准备爬取的 URL 爆炸式增长。

要避免会话 URL 陷阱,只需访问您的网站,禁用 cookie,然后单击几个链接即可。 如果 URL 中出现会话 ID,则您很容易受到会话 URL 陷阱的攻击。 MarketingTracer 页面 SEO 爬虫旨在检测此爬行陷阱。 只需检查您的抓取索引并过滤“会话”即可。

7.检查网站是否改变布局

匿名网络爬行 对于一些熟悉抓取工具的网站来说可能会很困难,并且可能有点棘手,因为它们可能有多种布局。 例如,某些页面集可能具有与其余页面显示的布局不同的布局。 为了避免这种情况,您可以使用不同的路径或 CSS 选择器来抓取数据。 或者如何在代码中添加条件以不同的方式抓取这些页面。

8. 网站如何检测和阻止网页抓取?

网站使用不同的技术来区分网络蜘蛛/爬虫和真人。 其中一些机制具体如下:

  1. 异常高的下载率/流量: 特别是在短时间内来自单个客户端/或 IP 地址。
  2. 以相同的浏览模式完成的重复任务: 基于人类用户不会每次都执行重复性任务的假设。
  3. 检查您的浏览器是否真实: 一个简单的检查就是尝试执行 JavaScript。 更智能的工具可以通过检查您的 GPU 和 CPU 来确保您来自真正的浏览器,从而更加努力。
  4. 使用蜜罐检测: 蜜罐通常是普通用户看不到的链接,但只有蜘蛛才能看到。 当网络蜘蛛/爬虫试图访问链接时,警报就会触发。

您可能需要花一些时间预先调查网站的抓取风险,以避免触发任何反抓取机制并相应地构建蜘蛛机器人。

9. 使用验证码解决 API:

当您开始大规模抓取网站时,您最终会被阻止。 您将开始在常规网页之前看到 CAPTCHA 页面。 Anticaptcha 或 2Captcha 等服务可以绕过这些限制。

对于 匿名网络爬行 在使用验证码的网站中,最好寻求验证码服务,因为它们比自定义验证码解算器相对便宜,这在执行大规模抓取时非常有用。

10.避免在登录表单后面刮擦:

Facebook、Instagram 和 LinkedIn 等私人平台的登录表单发送登录信息或 cookie 以及查看页面的请求,这反过来又使目标网站更容易查看来自同一地址的传入请求。 抓取工具必须对每个请求执行此操作,这可能会带走您的凭据或阻止您的帐户,从而导致网络抓取工作被阻止。

建议避免使用登录表单抓取网站,以免轻易被阻止 爬行时保持隐藏。 但避免这种情况的一种方法是,每当需要身份验证才能获取目标数据时,使用浏览器模仿人类行为。

11.改变你的爬行行为:

防止网站因重复抓取模式而自动阻止爬虫的最佳匿名抓取技术之一是在方法中引入一些多样性。 如果您的爬虫始终遵循相同的模式,网站就可以根据其可预测的操作轻松识别它。

建议偶尔对爬虫的行为进行一些更改。 这可能涉及随机点击或滚动操作来模仿网站上普通用户的行为。 在开始广泛的抓取会话之前,花时间手动访问网站来探索网站的结构也是一个好主意。 这样,您可以更好地了解如何无缝地融入网站的自然流程。

你怎么知道一个网站是否禁止或阻止了你?

以下迹象表明您被阻止从某个网站抓取:

  • 频繁的 HTTP 404、301 或 50x 错误响应
  • 验证码页面
  • 内容交付异常延迟
    要检查的一些常见错误响应是:
  • 503服务不可用
  • 429 - 请求过多
  • 408 - 请求超时
  • 403 - 请求的资源被禁止
  • 404 - 未找到
  • 401 - 未经授权的客户端
  • 301 - 永久移动

网站抓取是否违法?

只要您不违反网站的服务条款 (ToS),爬行或抓取网站通常并不违法。 重要的是,您使用的网络抓取工具不要尝试登录或访问网站的受限制区域,因为这会违反网站的服务条款。

然而,有一个常见的误解,认为抓取所有类型的公共数据总是合法的。 图像、视频和文章等某些内容可以被视为创意作品,并受版权法保护。 您不能自由地使用您的网络抓取工具来收集和使用此类受版权保护的材料。

在某些情况下,某些网站的服务条款明确规定不允许抓取,在这种情况下,抓取可能被视为非法。 因此,遵守每个网站制定的规则以确保合法地抓取数据至关重要。

总结

希望您通过阅读本文学到了新的匿名抓取技术。 我必须提醒您继续尊重 robots.txt 文件。 另外,尽量不要向较小的网站发出较大的请求。 或者,您可以使用 Crawlbase Crawling API 这决定了所有这一切都不会浪费您的宝贵时间,并专注于按时并以可扩展的方式完成工作。