提及爬虫相信大家都知道,今天为大家介绍五点解决反爬的机制。
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