一.爬虫伪装手段
(1)UA伪装

最初开始练习基础爬虫时,我们常常使用如下的语句直接对网站进行请求

r = requests.get(url=url)

通过这行简单的语句,我们依然能够从少数网页获取到内容,但大部分时候,我们将得到错误提示。

如下 我们直接使用该语句访问豆瓣

url = 'https://www.douban.com/'
response = requests.get(url)
print(response.status_code)

打印状态码为:

418

418状态码常被用作‘爬虫警告’,即我们由代码发起的访问身份被发觉。

我们打印爬虫请求头进行观察,'python-requests’是爬虫被察觉的主要原因。

"User-Agent": "python-requests/2.20.1"

此时使用UA伪装能够解决该问题。

UA:User-Agent 用户代理

headers = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.33'
}
url = 'https://www.douban.com/'
response = requests.get(url=url, headers=headers)
print(response.status_code)

打印状态码为:

200

访问成功。

(2)随机休眠

利用上述伪装能够访问更多的网站,但因爬虫的访问速率与人类正常习惯不同。

一段时间的访问后,爬虫总是因其高频访问而被察觉,从而受到目标网站的拒绝。

r = requests.get(url=url, params=params, headers=headers)
t = random.randint(1, 5)  
time.sleep(t)

为模拟人类行为,每次访问后随机暂停1至5秒,从而降低爬虫辩认度。

(3)IP代理

进行上述操作后,爬虫被察觉的可能性降低,

但当你短时间内需要进行大量的访问时,进行随机休眠可能会导致你的爬虫项目运行时间过长。

并且仍然存在被目标网站拒绝访问的可能。

python 伪装位置信息 python爬虫ip伪装_python 伪装位置信息

我们知道,网站拒绝我们访问的方式,常常是限制我们计算机的IP,从而达到限制访问的结果。

IP封锁是指 防火墙 维护一张IP黑名单,一旦发现发往黑名单中地址的请求 数据包 ,就直接将其丢弃,这将导致源 主机 得不到目标主机的及时响应而引发超时,从而达到屏蔽对目标主机的访问的目的。

那么,我们使用其他IP对实际IP进行隐藏即可忽视这种对IP的封锁,

并且用于访问的IP地址的不断更换,降低了单个IP的访问频次,进一步提升了爬虫的隐蔽性。

匿名度

表现

透明度

服务器知道该次访问为匿名 且能够获取到真实IP

匿名

服务器知道该次访问为匿名 不知道真实IP

高匿

服务器误认为代理IP就是真实IP

使用IP代理的方式很简单 将IP及其端口传入即可。

proxies = {
    'https':'120.220.220.95:8085'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
response = requests.get(url=url,headers=headers,proxies=proxies)

但每次手动调整proxies并不便利,我们需要搭建代理IP池来更好地支撑我们的工作。