4.1 url传参的目的
需要短时间内连续访问同一个服务器很多次这样一个需求
headers_ = {“User-Agent”:“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36”}
在服务器端会有记录
同一个User-Agent 3s 上百次 非正常用户行为 以此来判断你是一个爬虫程序
4.2 方法一:User-Agent 池
可以理解成是一个列表 很多的Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36
100次请求
每一次请求,都从User-Agent池里面随机拿一个身份 张三 李四 五二 赵六
import requests
# 简单演示如何使用
import random
# 1.使用列表,里面存放很多的User-Agent的值
user_agent_list = [
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.12',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.13',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.14',
'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.15',
]
# 获取一个随机整数,作为列表的索引值
num = random.randint(0,4) # 前后都包,0和4都有可能取到
# 打印获取到的索引
# print(num)
#
# 打印随机 选取的user-agent
# print(user_agent_list[num])
# print('*'*80)
# if __name__ == '__main__':
# url_ = 'https://www.baidu.com'
#
# headers_ = {
# 'User-Agent':user_agent_list[num]
# }
#
# # 每次请求,都携带上随机的User-Agent
# response_ = requests.get(url_,headers=headers_)
#
# # 打印百度服务器端检测到我们用的用户代理身份
# print(response_.request.headers)
#
4.3 方法三:使用第三方库fake_useragent
pip install fake-useragent -i https://pypi.doubanio.com/simple
from fake_useragent import FakeUserAgent
import requests
user_agent_demo = FakeUserAgent().random # 这个random不需要导入
print(user_agent_demo)
print('*'*80)
if __name__ == '__main__':
url_ = 'https://www.baidu.com'
headers_ = {
'User-Agent':user_agent_demo
}
# 每次请求,都携带上随机的User-Agent
response_ = requests.get(url_,headers=headers_)
# 打印百度服务器端检测到我们用的用户代理身份
print(response_.request.headers)
若调用失败:
终极方法:
ctrl点击FakeUserAgent进入源码 > ctrl点击settings进入源码 > 第16 CACHE_SERVER 这里有一个https,把s去掉
如果有弹窗,点击OK > 再把s去掉:CACHE_SERVER = ‘http://fake-useragent.herokuapp.com/browsers/{version}’
多运行几遍