两个绕过网站反爬机制的方式

简介: 两个绕过网站反爬机制的方式

在日常爬取网站的时候,我们经常会遇到一个问题,就是很多网站上都部署了反爬虫机制,当服务器检测到一段时间内同一个 IP 持续密集的访问网站,则将其判定为爬虫程序,在一段时间内不允许该 IP 地址访问服务器。
如果平时没什么事儿的话,可以写个延迟函数,每爬一次随机歇个几秒钟,这样可以很有效的降低访问密度,从而避开反爬机制。但是,这样的话太浪费时间了,几万条数据可能要爬一整天。对于一些公司业务来说是需要更加有效率的爬取数据,所以遇到这种情况可以使用代理 IP 和随机 UA(User-Agent)。说白了就是伪装爬虫,假装不同的人使用不同的浏览器在访问网站。
关于随机UA,即 User-Agent ,使用它可以将我们的爬虫伪装成浏览器,让对方以为是真人在使用浏览器访问,从而骗过目标网站的反爬机制。但是使用固定的 UA 去爬也是会有问题的,你想嘛,假如你发现最近几个小时内来访问的几万个用户,用的都是同一个浏览器,你还会认为对面是真人吗?不封它封谁!
所以,为了让我们的爬虫更像真人在使用,我们不仅要为它设置 UA,还要使用随机 UA(让对方服务器开心的以为有好多的用户在访问呢)。

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/548.39 (KHTML, like Gecko) Chrome/104.0.234 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/598.45 (KHTML, like Gecko) Chrome/103.0.2647 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/585.54 (KHTML, like Gecko) Chrome/92.0.2667 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/585.52 (KHTML, like Gecko) Chrome/93.0.2005 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.70
Mozilla/5.0 (Windows NT 9_1_2; Win64; x64) AppleWebKit/600.48 (KHTML, like Gecko) Chrome/95.0.1729 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.99 Vulcan/0.3.0.1 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.74 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.78
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.182.400 QQBrowser/11.3.5182.400
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.168.400 QQBrowser/11.0.5120.400
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) tcs_app/3.7.3 Chrome/94.0.4606.81 TCS/3.7.3 TTTCS/3.7.3 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4482.0 Safari/537.36 Edg/92.0.874.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3.1 Safari/605.1.15
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36 Edg/93.0.961.52
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/567.48 (KHTML, like Gecko) Chrome/93.0.1941 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/550.45 (KHTML, like Gecko) Chrome/88.0.960 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.42 (KHTML, like Gecko) Chrome/93.0.2048 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x6309001c) XWEB/6500
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36 (compatible; SMTBot/1.0; http://www.similartech.com/smtbot)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.343.0 Safari/533``
`  
关于代理IP,这个就是大家熟悉的不能再熟悉的问题了,要想高效的获取数据肯定是需要高质量的代理,这个只能通过购买代理服务,我想作为爬虫大家肯定也用过不少的代理了,好的坏的都有一定的了解。如果没有什么好的代理可以选择的,这里推荐一家老代理商,亿牛云代理,已经合作了很多年,代理稳定性和质量一直都很好,售后也是很不错的。尤其推荐他们家的爬虫隧道代理,不知道隧道代理怎么使用的,这里可以简单的示例大家参考下。
示例中使用的方法亲测可用,但是代码并非全部源码,不保证代码可以直接复制粘贴使用,建议大家理解原理之后,根据自己的爬虫项目需要进行相应的调整或直和商家联系提供完整代码示例。
import requests
import random

# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"

# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"

# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"

# 代理验证信息
proxyUser = "username"
proxyPass = "password"

proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host" : proxyHost,
    "port" : proxyPort,
    "user" : proxyUser,
    "pass" : proxyPass,
}

# 设置 http和https访问都是用HTTP代理
proxies = {
    "http"  : proxyMeta,
    "https" : proxyMeta,
}


#  设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}



resp = requests.get(targetUrl, proxies=proxies, headers=headers)

print resp.status_code
print resp.text
相关文章
|
1月前
|
数据采集 监控
如何检测和应对网站的反爬虫机制?
如何检测和应对网站的反爬虫机制?
83 3
|
3月前
|
数据采集 机器学习/深度学习 安全
如何有效防爬虫?一文讲解反爬虫策略
如何有效防爬虫?一文讲解反爬虫策略
103 0
|
4天前
|
数据采集 JavaScript 前端开发
如何判断一个网站是否采取了反爬虫措施
通过观察请求响应、分析请求频率限制和检测JavaScript动态加载来初步判断网站是否使用反爬虫措施。使用Python `requests` 发送请求并检查响应头和内容,寻找验证码、限制信息。尝试短时间内多次请求,看是否被限制。使用Selenium模拟浏览器行为,获取动态加载内容。注意,这些方法仅为初步判断,实际可能需更深入分析,并确保爬取行为合法合规。
|
3月前
|
存储 安全 网络安全
怎么看服务器是中毒了还是被攻击?以及后续处理方案
怎么看服务器是中毒了还是被攻击?以及后续处理方案
|
3月前
|
安全 应用服务中间件 PHP
文件上传解析漏洞,以及检测方式的绕过
文件上传解析漏洞,以及检测方式的绕过
|
6月前
|
云安全 安全 Linux
网站服务器怎么做防御?遇到攻击如何解决?
如今黑客攻击越来越多也十分猖獗,我们应如何防护呢?
45 0
|
11月前
|
SQL 开发框架 安全
绕过安全狗【后续再更新】
绕过安全狗【后续再更新】
100 0
|
SQL XML 开发框架
关于网站防范XSS攻击的几点思考
关于网站防范XSS攻击的几点思考
119 1
|
安全 JavaScript Apache
文件上传漏洞原理/方式/防护
文件上传漏洞是获取服务器权限最快也是最直接的一个漏洞 原理 文件上传漏洞是指用户上传可执行脚本文件 , 并通过脚本文件控制Web服务器
316 0