当前位置: 首页 > news >正文

selenium抓包的具体操作(学习自用)

我采用以下代码进行解释

#抓网络包 logs = browser.get_log('performance') print(f"7. 捕获到 {len(logs)} 个性能日志") count = 0 for entry in logs: # 第一步:解析日志条目(JSON字符串转Python字典) message = json.loads(entry['message']) # 第二步:筛选出"网络响应已接收"类型的日志 if message['message']['method'] == 'Network.responseReceived': request_id = message['message']['params']['requestId'] # 第三步:提取响应的核心信息 response = message['message']['params']['response'] url = response['url'] # 第四步:筛选我们关心的视频相关API请求 if 'bilibili.com' in url: count += 1 # print(f"8. 找到第{count}个B站请求:{url}") # 第五步:通过requestId获取完整的响应体内容 try: res = browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': request_id}) # 第六步:处理并保存响应体 if res.get('body'): body = res['body'] # print(f"9. 响应体长度:{len(body)}") print(f"10. 完整响应体内容:\n{body}") # with open('d:\\aitems\\ktv\\backend\\first_response.txt', 'w', encoding='utf-8') as f: # f.write(body) # print("\n11. 响应体已保存到 first_response.txt") break else: print() # print(f"9. 响应体为空,继续查找...") except Exception as e: # print(f"9. 获取响应体失败:{str(e)},继续查找...") continue
浏览器手动操作 ↔ 代码对应逻辑 ------------------------------------------------- 打开F12+网络面板 ↔ chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'}) 刷新页面抓请求 ↔ browser.get(url) + browser.get_log('performance') 筛选目标请求 ↔ 遍历logs,筛选method='Network.responseReceived' + url含bilibili.com 查看响应体 ↔ browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': xxx})

1、基础配置:开启性能日志采集(不开抓不到日志)

chrome_options = Options() chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})

2、获取日志

logs = browser.get_log('performance') print(f"7. 捕获到 {len(logs)} 个性能日志")

3、遍历日志

for entry in logs: # 第一步:解析日志条目(JSON字符串转Python字典) message = json.loads(entry['message'])

4、筛选「响应已接收」的请求

# 第二步:筛选出"网络响应已接收"类型的日志 if message['message']['method'] == 'Network.responseReceived':

我们从基础配置到筛选请求的操作都是固定操作

接下来就是根据我们所需要内容的需求进行提取

5、提取请求 ID 和 URL

request_id = message['message']['params']['requestId'] # 第三步:提取响应的核心信息 response = message['message']['params']['response'] url = response['url'] #这一行固定写法

6、筛选目标 URL

# 第四步:筛选我们关心的视频相关API请求 if 'bilibili.com' in url:

只处理和 B 站相关的请求,根据需求进行筛选

7. 获取响应体

# 第五步:通过requestId获取完整的响应体内容 try: res = browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': request_id}) # 第六步:处理并保存响应体 if res.get('body'): body = res['body'] print(f"10. 完整响应体内容:\n{body}") break # 找到第一个就退出 except Exception as e: continue

总结

除了筛选url这一步,其他基本都是固定流程

1. 配置Chrome:开启performance日志采集 → 固定 2. 访问目标页面:browser.get(url) → 自定义URL 3. 获取日志:browser.get_log('performance') → 固定 4. 遍历日志: a. 解析message为JSON → 固定 b. 筛选method='Network.responseReceived' → 固定 c. 提取requestId和url → 固定 d. 筛选目标url(比如含bilibili.com)→ 自定义 e. 调用Network.getResponseBody获取响应体 → 固定 f. 处理响应体(保存/解析)→ 自定义
http://www.jsqmd.com/news/449579/

相关文章:

  • b站视频全自动化爬虫,采用抓包,基于selenium(学习使用)
  • AI模型部署对比:OpenClaw本地部署与星图GPU一键部署DeOldify的优劣分析
  • GME多模态向量-Qwen2-VL-2B创意应用:辅助生成AE视频剪辑的智能标签与片段管理
  • Fish Speech 1.5快速部署:镜像预加载+服务自动恢复机制详解
  • Windows 环境升级 triton-windows 修复 ptxas.exe DLL 崩溃问题
  • 用 NVIDIA API Key 同时做画图和语音:一套从实测到落地的技术方案
  • 救命神器!自考专属AI论文平台,千笔AI VS 云笔AI
  • Tauri 生态安全体系从代码提交到版本发布的全链路防护
  • H7-TOOL脱机烧录升级对NXP汽车级M7芯片S32K314支持
  • 性能问题定位记录-1
  • 编程计算消毒液配比,按场景(家居/餐具/皮肤)生成安全浓度,避免刺激与失效。
  • Windows 配置 chatExcel-MCP完整踩坑指南
  • Qwen3-0.6B-FP8在Keil5开发环境中的辅助插件构想与实现思路
  • 3.7打卡
  • 多线程基础(2)
  • Leetcode使用最小花费爬楼梯的解法思考与回溯
  • 不踩雷!千笔ai写作,普遍认可的AI论文工具
  • 土豆矮砧密植:水肥一体化系统铺设全指南
  • DeepInnovator专攻一件事:让LLM自己想出科研新点子
  • 信息奥赛一本通—编程启蒙(3366:【例63.2】 回形方阵)
  • Uniapp微信小程序:自定义海报生成方案。支持保存到本地,二维码生成,富文本解析(个人学习记录)
  • Legal RAG Bench:当检索拖了后腿,大模型再聪明也白搭
  • Qwen-Image-2512-SDNQ Web服务部署教程:防火墙端口开放与公网访问安全配置
  • 虚拟机常见问题
  • Janus-Pro-7B企业实操:客服中心图片工单理解+标准化回复生成
  • 9K 条数据训 4B 模型,逼近 DeepSeek-R1?CHIMERA 用合成数据破解推理冷启动难题
  • 学长亲荐!千笔AI,研究生论文写作神器
  • 安晋捷运(深圳)国际物流有限公司安井株式会社日本专线物流服务
  • prometheus告警-以CPU使用率告警为例
  • 查重35%、AI概率80%?别删内容!百考通用语义重构双降达标