requests 反爬
概述#
本章内容
- 模拟浏览器登录 -> 处理cookie
- 防盗链处理 -> 抓取梨视频数据
- 代理 -> 防止被封ip
- 接入第三方代理
cookie#
登录 -> 得到cookie
带着cookie 去请求到需要的url
# 必须把上面的两个操作连起来
# 我们可以使用session进行请求 -> session可以认为是一连串的请求,中间cookie不会丢失
import requests
# 会话
session = requests.session()
data = {
"login":""
"psd":""
}
# 1. 登录
url = ""
resp = session.post(url, data=data)
print(resp.text)
# 2. 拿书架上的数据
resp = session.get("")
print(resp.json())
防盗链#
"""
1. 拿到contID
2. 拿到url返回的json
3. srcUrl里面的内容修整
4. 下载视频
"""
import requests
# 页面url
url = "https://www.pearvideo.com/video_1061649"
contId = url.split("_")[1]
url = "https://www.pearvideo.com/videoStatus.jsp?contId=1061649&mrd=0.34107718392722197"
headers = {
# Referer 防盗链:溯源,当前本次请求的上一级是谁
"Referer": "https://www.pearvideo.com/video_1061649"
}
resp = requests.get(url, headers=headers)
dic = resp.json()
srcUrl = dic["videoInfo"]["videos"]["srcUrl"]
systemTime = dic["systemTime"]
srcUrl = srcUrl.replace(systemTime, f"cont-{contId}")
# download video
with open("梨视频.mp4", mode="wb") as f:
f.write(requests.get(srcUrl).content)
代理#
import requests
url = "https://www.baidu.com"
# 准备代理信息
proxy = {
# 快代理 https://www.kuaidaili.com/free/intr/
"http": "121.8.215.106:9797",
"https": "121.8.215.106:9797"
}
# proxies 代理
resp = requests.get(url, proxies=proxy)
resp.encoding = "utf-8"
print(resp.text)
第三方代理接入#
# kuaidaili.com/free
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?