requests爬虫五大反反爬机制

提及爬虫相信大家都知道,今天为大家介绍五点解决反爬的机制。

1、SSL证书验证错误
错误:

requests.exceptions.SSLError: (“bad handshake: Error([(‘SSL routines’,
‘tls_process_server_certificate’, ‘certificate verify failed’)],)”,)

解决办法

import requests

url = “https://www.baidu.com/”
response = requests.get(url,verify=False).content.decode() # 默认解码方式为UTF-8
print(response)

2、用户user-agent过于频繁
注意:有些网站会统计单个user-agent单位时间访问服务器的次数。
解决方法:

pip install fake_useragent # 安装ua库
1
from fake_useragent import UserAgent
import requests

url = ‘https://www.baidu.com/’
ua = UserAgent().random
header = {
‘User-Agent’: ua
}
response = requests.get(url, headers=header, verify=False).content.decode()
print(response)

3、代理
注意:不仅为了保护自己,也为了提高爬虫的效率,安全度高,可以使用代理,但是成本高。

解决方法:

import requests

proxy = {
“http”: “http://12.13.1.10:1234”,
“https”: “http://12.11.2.15:2048”,
}
response = requests.get(“https://www.baidu.com/”, proxies=proxy).content.decode())
print(response)
1
2
3
4
5
6
7
8
4、time.sleep()延时操作
注意:服务器反爬不仅是为了保护数据安全,也为了保护服务器本身。爬虫速度过快会导致服务器下跪。

解决方法:

import time
import requests

time.sleep(5) # 休眠五分钟
url = ‘https://www.baidu.com/’
response = requests.get(url).content.decode()
print(response)

在headers中添加Referer
Referer:目标网址

示例:

url = ‘https://www.baidu.com/’
ua = UserAgent().random
header = {
‘Referer’: ‘https://www.baidu.com/’,
‘User-Agent’: ua
}
response = requests.get(url, headers=header, verify=False).content.decode()
print(response)

 

IP代理池

https://www.cnblogs.com/ruogu/p/9606599.html