西北乱跑娃 --- 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库
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)
4、time.sleep()延时操作
注意:服务器反爬不仅是为了保护数据安全,也为了保护服务器本身。爬虫速度过快会导致服务器下跪。
解决方法:
import time import requests time.sleep(5) # 休眠五分钟 url = https://www.baidu.com/ response = requests.get(url).content.decode() print(response)
5、在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)
