10请求头反爬
反爬处理
爬虫:使用技术手段去批量的获取网上的数据
反爬:使用技术手段,阻止别人获取自己网站上的数据
反反爬:使用技术手段 绕过对方反爬策略
请求头反爬
User-Agent:在HTTP请求的请求头里面的一个字段,用来表明。请求的客户端是什么,不同的浏览器会有不同的User-Agent。我们之前处理这种反爬的方式就是在浏览器里面直接复制比较麻烦。python当中会有一个第三方模块,帮我们更快的获取User-Agent。fake_useragent
import requests
# pip install fake_useragent
from fake_useragent import UserAgent
# 随机生成一个UA,存在浏览器版本不兼容的问题
ua = UserAgent()
headers = {
'User-Agent': ua.random
}
response = requests.get('https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA', headers=headers)
print(response.text)
Referer:表明当前这个请求是从哪个url
过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不做相关的响应。
import requests
from fake_useragent import UserAgent
from lxml import etree
# 1. 是给列表页发送请求
url = 'https://www.pearvideo.com/popular'
headers = {
"user-agent": UserAgent().random
}
response = requests.get(url, headers=headers)
html = response.text
# 2. 在列表页里面html代码当中 解析详情页面url
html = etree.HTML(html)
lis = html.xpath('//ul[@id="popularList"]/li')
for li in lis:
# 3. 我们发现详情页面当中是没有我们要的数据的
d_url = li.xpath('./div[@class="popularem-ath"]/a/@href')[0]
name = li.xpath('./div[@class="popularem-ath"]/a/h2/text()')[0]
contId = d_url.split('_')[1]
# 4. 获取我们视频对应的url是在这个链接上
# 4.1 当我们给这个链接发送请求的时候, 发现获取不到我们要的数据
# 4.2 因为在发送这个请求的时候 后端判断了我们请求头当中的Referer这个字段
# 防盗链 表明的是我们发送这个请求之前是在那个url上
json_url = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.4479471535100221"
detail_url = f'https://www.pearvideo.com/{d_url}'
detail_headers = {
"user-agent": UserAgent().random,
"Referer": detail_url
}
json_response = requests.get(json_url, headers=detail_headers).json()
systemTime = json_response['systemTime']
srcUrl = json_response['videoInfo']['videos']['srcUrl']
video_url = srcUrl.replace(systemTime, f'cont-{contId}')
print(name, video_url)
with open(f'{name}.mp4', 'wb') as f:
f.write(requests.get(video_url).content)
print(f'{name}.mp4-下载完成')
print('-' * 100)
Cookie:对应的是一个用户的信息,cookie是会有过期时间的。遇到了我们直接更换cookie值就可以了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~