Python中如何分析浏览器网络请求并查看请求参数

站点:mail.126.com
原因:想写一个爬虫用来整理自己的邮件
问题:成功登陆 获取邮件列表都很顺利。 问题来了在点击不同邮件时 请求的 Url 和参数都是一样的。。。在 Chrome 和 Firfox 都试过了 接口的返回值确实是邮件内容 但是参数都是一样的 cookie head 都排查了 没有不同之处 google 上说是用什么后台渲染实现的???个人猜测应该是思路不对 或者哪里疏忽了。。麻烦请各位大神指点一下下
Python中如何分析浏览器网络请求并查看请求参数


2 回复

要分析浏览器网络请求并查看请求参数,Python里最直接的方法是使用requests库来模拟请求,或者用selenium配合浏览器开发者工具来捕获实时流量。

1. 使用 requests 库分析(静态请求) 对于可以直接复现的请求(比如查看到的API调用),用requests发送请求并检查参数和响应最方便。

import requests

# 示例:发送一个带参数的GET请求
url = 'https://httpbin.org/get'
params = {'key1': 'value1', 'key2': 'value2'}
headers = {'User-Agent': 'Mozilla/5.0'}

response = requests.get(url, params=params, headers=headers)
print("请求URL:", response.url)  # 查看最终请求URL(包含参数)
print("状态码:", response.status_code)
print("响应头:", response.headers)
print("响应内容:", response.json())  # 假设是JSON响应

# 如果要查看请求发出的详细信息,可以这样
print("\n--- 请求详情 ---")
print("请求方法:", response.request.method)
print("请求头:", response.request.headers)
print("请求体:", response.request.body)  # 对于GET通常为None

2. 使用 selenium-wire 捕获浏览器请求(动态页面) 对于需要执行JavaScript或处理复杂交互的页面,selenium-wire扩展了selenium,可以拦截和检查浏览器发出的所有网络请求。

from seleniumwire import webdriver
import time

# 设置Chrome驱动
options = webdriver.ChromeOptions()
# options.add_argument('--headless')  # 可选无头模式

driver = webdriver.Chrome(options=options)

# 访问目标页面
driver.get('https://example.com')

# 等待一些交互或页面加载
time.sleep(3)

# 遍历捕获到的所有请求
for request in driver.requests:
    if request.response:
        print(f"URL: {request.url}")
        print(f"方法: {request.method}")
        print(f"请求头: {request.headers}")
        print(f"请求体: {request.body}")
        print(f"响应状态码: {request.response.status_code}")
        print("-" * 50)

driver.quit()

3. 使用浏览器开发者工具手动分析 在浏览器里按F12打开开发者工具,切换到“Network”(网络)标签页,刷新页面或进行交互,这里能看到所有请求。点击任意请求,在“Headers”标签下可以查看完整的请求URL、方法、请求头、查询参数(Query String Parameters)和请求体(Request Payload,对于POST)。这是最直观的手动分析方法,Python脚本可以基于这里观察到的信息来编写。

总结建议 根据你的具体场景选择合适的方法。


我没有 126 邮箱,试了他的兄弟 163 邮箱,不同邮件发起的请求参数是不一样的。
我不能确定到底什么问题,不过如果只是为了整理邮件,不一定要通过 web 邮箱。
不是有 poplib 么,可以开通邮箱的 pop3 服务

回到顶部