要找ajax接口,先在network中筛选xhr/fetch请求,操作页面触发新请求,找响应为json且含业务字段的;注意headers、cookie、referer等反爬参数,post时按request payload格式选data或json参数。

怎么看懂 Network 里哪个请求是你要的 AJAX 接口
动态数据通常藏在 XHR 或 Fetch 类型的请求里,不是 HTML 页面本身。打开浏览器开发者工具的 Network 标签页,刷新页面后筛选 XHR 或 Fetch,再操作页面(比如点“加载更多”、选城市、输关键词),观察新出现的请求——那个响应里有你要的数据(JSON 格式)的就是目标接口。
常见错误现象:只盯着 Doc 类型请求,或者看到一堆 js、css 就跳过;其实真正传数据的请求往往体积小、响应快、Content-Type 是 application/json。
- 右键点击请求 →
Copy→Copy as cURL,粘贴到终端能直接复现,这是验证是否找对的最快方式 - 注意请求的
Method:多数是GET,但翻页、搜索、提交表单常是POST,参数在请求体(Request Payload)里,不是 URL 上 - 检查
Response是否含真实业务字段(如"title"、"price"、"list"),而不是{"code":0,"msg":"success"}这种空壳
为什么 requests 直接请求会返回空或 403/401
因为服务端做了反爬校验:缺 User-Agent、没带 Cookie、没传 Referer、甚至要求请求头里有自定义字段(比如 X-Requested-With: XMLHttpRequest)。
使用场景:你从 Network 复制了 cURL,但用 requests.get() 一跑就挂,大概率是 headers 没对齐。
- 在
Network里点中目标请求 →Headers标签 → 拉到底看Request Headers,把所有非浏览器默认字段(如authorization、x-token、cookie)都复制进requests的headers参数 -
Cookie特别容易漏:它可能是登录态维持的关键,且有时有效期短,抓完立刻用,过几分钟再试可能就失效 - 某些接口校验
Referer或Origin,不填或填错会导致 403;填成发起该请求的上一页 URL 即可(比如列表页 URL)
POST 请求的 data 和 json 参数怎么选
取决于接口实际接收的格式。看 Network 里的 Request Payload 是纯 JSON 字符串,还是 form-data / x-www-form-urlencoded 形式。
参数差异直接影响服务端能否解析:
- 如果 payload 是
{"keyword":"python","page":1}(无引号包裹、缩进、换行),且Content-Type是application/json,就用requests.post(url, json=...) - 如果 payload 显示为
keyword=python&page=1,或Form Data标签里有字段列表,就用data=...并确保Content-Type是application/x-www-form-urlencoded(requests默认就是) - 千万别把字典直接塞给
data=:那样会变成str({...}),服务端收不到字段;要用data={"key":"val"}或json={"key":"val"},由 requests 自动序列化
接口返回 200 但 data 是空数组或加密字段
说明请求发出去了,但服务端没认出你是“合法用户”。常见于需要登录态、时间戳签名、前端计算 token 的接口。
性能 / 兼容性影响:这类接口往往不能简单靠复制 headers 解决,得逆向 JS 逻辑,成本高、易失效。
- 先确认
Response是不是真 JSON:有些接口返回的是加密字符串(如"eyJhbGciOi..."),或 base64 编码,或前端用 WebAssembly 解密——这时候 Python 爬虫基本没法硬刚 - 检查请求 URL 是否含动态参数:比如
timestamp=1715823492123,这个值必须和当前毫秒时间一致,差几秒就拒绝 - 某些接口要求
sign字段,它是对其他参数做哈希(如md5("page=1&size=20&salt=abc")),salt 可能在 JS 里写死,也可能从上一个接口返回 —— 这时就得扒 JS 代码,而不是只看 Network
最麻烦的情况不是找不到接口,而是接口本身依赖运行时环境(比如 localStorage、canvas 指纹、WebGL 渲染特征)。这时候 requests 就彻底不够用了,得切到 Playwright 或 Pyppeteer,但那已经不是“分析接口”而是“模拟人”的范畴了。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











