如果您正在爬取网站,您可能已经使用代理服务器可靠且匿名地收集数据。但是,如果您想要阻止代理服务器对您的网站进行爬取呢?本文将描述网络爬虫和代理服务器的工作原理,并介绍如何使用IP地理位置API来防止通过代理服务器进行网络爬虫。
什么是网页爬取?
网络爬取是获取非结构化数据并将其格式化为结构化格式的过程。例如,您可以使用 Python 来爬取 Google 搜索结果。另一个常见的用例是从股票市场网站爬取最新的股票数据,将该数据构建到 CSV 中,然后从 CSV 中提取该变量以在 Python 程序中计算股票市场回报。
这样做并不违法,但当它开始给公司的网络服务器带来负担时,他们可能会阻止您的 IP 地址。请务必检查网站的 robots.txt 文件以了解其预期的爬取行为和礼仪。
什么是代理服务器?
当某个 IP 地址被网站阻止时,爬取工具可能会使用代理服务器来绕过该阻止。那么,什么是代理?它是一个第三方服务器,通过不同的 IP 地址路由您的连接。请记住,IP 地址标识连接发生的位置 – 例如,您家中的路由器。代理使该连接看起来像是来自另一个地方的另一个设备。
过去,您在绕过学校的互联网过滤器或使用 VPN 播放受地区限制的欧洲歌唱大赛时可能遇到过代理。我们并不纵容这些活动,但他们利用了通过第三方连接重新路由 IP 地址的想法。
成功进行网页爬取的要素
开始基本的网页爬取只需要一点 Python 代码、一些 Python 库(如 Beautiful Soup)和互联网连接。但是,要使您的爬取高效、可靠和匿名,即成功,有一些重要因素。
网络爬取中最重要的因素之一是使用高质量的代理,甚至代理池中的多个代理来扩大爬取操作的规模。高质量的代理可以将您的网页爬取项目提升到一个新的水平:
- 如果您在没有代理的情况下进行爬取,当一个网站阻止您的 IP 时,您必须寻找具有相同信息的另一个网站。
- 代理提高了爬取的可靠性和数量。
- 代理允许您查看从世界其他地方访问时出现的内容。如果您要爬取与位置相关的数据,这一点非常重要。
- 代理通过用他们的 IP 之一替换您自己的 IP 来保护您的身份。可以将其视为类似于 API 如何允许经过身份验证的用户通过接口交换数据,同时彼此保持匿名。也就是说,如果您希望您正在爬取的企业能够与您联系,您可以在第三方代理中提供您的联系信息。
为什么阻止代理是防止网页爬取的关键
如上所述,没有代理的爬取效率低下、不安全且无法扩展。如果有人认真对待网络爬取,他们肯定会使用高质量的代理池。
代理服务器是一个强大的工具。虽然收集公共网络数据本身并不坏,但鲁莽的网络爬取可能会对网站造成很大的损害。
那么,如果我们看看这个过程的另一端,看看正在被爬取的网站,我们保护我们的资源免受不良流量影响的最佳方法是什么?我们可以使用代理检测和 IP 地理定位来根除使用代理进行爬取的用户并阻止他们。
什么是代理检测?
您猜对了,代理检测是网站所有者识别代理连接的方法。网站收到的 IP 地址可以根据标记地址列表检查该 IP 并阻止流量。如果爬取工具使用有限数量的 IP,代理检测器会学会阻止它们,但代理服务只会再次更改 IP 范围。
您还可以检查常见代理条目的标头,例如x-forwarded-for,但这只会删除最基本的代理,我们正在尝试阻止专业人士。
如何使用 IP 地理定位阻止代理
要使用 IP 地理定位检测代理,请记住 IP 地址携带位置信息,宣布连接发生的位置。代理服务器使该连接看起来像是来自不同的地理位置。
因此,如果我们尝试识别代理服务器,我们可以使用 Abstract 的免费 IP Geolocation API 来测试这一点。注册后即可免费测试。
让我们尝试在浏览器中测试一个请求:
https://ipgeolocation.abstractapi.com/v1/?api_key={YOUR API KEY}
它将返回我们的 IP、地理位置和许多其他有趣的数据:
{ "ip_address": "174.49.204.134", "city": "York", "city_geoname_id": 4562407, "region": "Pennsylvania", "region_iso_code": "PA", "region_geoname_id": 6254927, "postal_code": "17402", "country": "United States", "country_code": "US", "country_geoname_id": 6252001, "country_is_eu": false, "continent": "North America", "continent_code": "NA", "continent_geoname_id": 6255149, "longitude": -76.6653, "latitude": 39.9552, "security": { "is_vpn": false }
如果我们使用 VPN 并尝试相同的测试请求,我们会得到不同的结果。VPN 与代理不同,但它们提供类似的结果。
{ "ip_address": "23.105.165.55", "city": "Manassas", "city_geoname_id": 4771401, "region": "Virginia", "region_iso_code": "VA", "region_geoname_id": 6254928, "postal_code": "20110", "country": "United States", "country_code": "US", "country_geoname_id": 6252001, "country_is_eu": false, "continent": "North America", "continent_code": "NA", "continent_geoname_id": 6255149, "longitude": -77.4918, "latitude": 38.7493, "security": { "is_vpn": false }
现在,我们可以使用此 IP 地理定位 API 来查看传入流量来自何处,并根据该信息做出阻止决策。一些战略考虑:
- 我们可能会阻止来自欺诈活动频繁的国家/地区的 IP。
- 我们可能会在地理位置上阻止我们通常的客户群之外的请求。
- 我们可能会获取此数据并发现代理流量没有执行任何可疑或消耗资源的操作。
- 我们可能会使用这些数据来定位我们的广告活动。(那个城市的这家公司正在扰乱一切!)
是否可以检测并阻止所有代理?
代理猫捉老鼠的游戏已经持续了很长时间,而且可能不会停止。代理并不违法,但围绕它们的大量讨论让它们听起来像是只有信用卡诈骗者和匿名者使用它们。它们可用于负责任地匿名化在线流量,但与任何工具一样,它们有时会落入不良代理手中。
考虑到不良机器人活动现在占互联网流量的 39%,现在是了解谁在访问您的硬件以及它是否影响您的客户的好时机。IP 地理定位数据库是一个很好的收集和操作工具。