在 Day 15,我们已经把 Cookie、Session、Token 的关系 彻底讲清楚了。
接下来,很多同学都会卡在一个真正"动手"的问题上:
登录接口到底该怎么分析?
参数这么多,是不是都要传?
Token 从哪里来?
为什么我照着请求发,还是登录失败?
别急,这一切都不是"玄学",而是登录流程没有被正确拆解。
今天,我们就站在 爬虫工程师的视角 ,一步步教你:
如何用浏览器,把一个网站的登录流程拆清楚。
🔍 一、爬虫眼里的"登录"本质是什么?
先说结论:
登录 ≠ 输入账号密码
登录 = 服务器为你建立"可信身份"的过程
这个过程通常包括:
-
前置请求(获取 Cookie / Token)
-
提交账号密码
-
服务器校验
-
返回新的身份标识
-
后续请求自动携带身份
爬虫要做的,不是"模拟点按钮",而是:
复现这套请求链路。
🧠 二、分析登录接口前,你必须准备什么?
✅ 工具准备
-
Chrome 浏览器
-
开发者工具(F12)
-
Network 面板
-
基本的 requests / Session 知识
✅ 心态准备(很重要)
-
不要急着写代码
-
先观察,再模仿
-
所有答案都在 Network 里
🧭 三、标准登录接口分析流程(核心方法论)
下面这套流程,你可以 用在 80% 的网站上。
步骤 1:打开登录页面,清空 Network
-
打开登录页面
-
按 F12 → Network
-
勾选 Preserve log
-
清空已有请求
这样可以保证你看到的都是"登录相关请求"。
步骤 2:输入账号密码,点击登录
此时 Network 面板会出现一系列请求:
-
GET(页面、资源)
-
POST(提交表单)
-
XHR / Fetch(接口)
📌 你的目标是:找出"真正提交账号密码的那个请求"。
步骤 3:筛选 POST / XHR 请求
重点关注:
-
Request Method = POST
-
Request Payload / Form Data 中
-
username / password
-
mobile / email
-
code / captcha
-
这几乎一定是登录接口。
🔎 四、如何判断"哪个才是真正的登录接口"?
你可以用 4 个标准来判断:
✅ 1. 请求中包含账号信息
例如:
username
password
mobile
✅ 2. Response 中包含登录结果
例如:
-
success / true
-
code = 0
-
返回 token / session 信息
✅ 3. 登录成功后,Cookie 发生变化
重点观察:
-
新增 Cookie
-
sessionid 变化
-
token 写入 Cookie
✅ 4. 登录后才能访问的页面变为可访问
这是最重要的验证方式。
🧩 五、登录接口常见的 3 种参数类型
分析 Request Payload 时,你通常会看到三类参数。
🔹 1. 用户输入参数(必须)
✅ 2. Response 中包含登录结果
例如:
-
success / true
-
code = 0
-
返回 token / session 信息
✅ 3. 登录成功后,Cookie 发生变化
重点观察:
-
新增 Cookie
-
sessionid 变化
-
token 写入 Cookie
✅ 4. 登录后才能访问的页面变为可访问
这是最重要的验证方式。
🧩 五、登录接口常见的 3 种参数类型
分析 Request Payload 时,你通常会看到三类参数。
🔹 1. 用户输入参数(必须)
{
"username": "xxx",
"password": "xxx"
}
🔹 2. 隐式参数(前端生成)
例如:
-
csrf_token
-
login_token
-
timestamp
-
nonce
这些参数往往:
-
来自前一个接口
-
来自 Cookie
-
来自 JS 计算
🔹 3. 校验参数(反爬相关)
例如:
-
sign
-
signature
-
hash
-
encrypt
这是后续中高级反爬内容,现在你只需要识别它的存在。
🛠 六、爬虫中如何"复现"登录流程?(基础版)
假设你已经确认:
-
登录接口是 POST
-
参数是表单提交
-
不涉及复杂加密
那么爬虫逻辑通常是:
python
import requests
session = requests.Session()
session.headers.update(headers)
# 第一步:访问登录页(获取 Cookie / Token)
session.get(login_page_url)
# 第二步:提交登录信息
login_data = {
"username": "your_username",
"password": "your_password"
}
session.post(login_api_url, data=login_data)
# 第三步:访问登录后页面
res = session.get(profile_url)
print(res.text)
📌 关键点只有一个:
三步必须在同一个 Session 中完成。
🚨 七、新手最容易失败的 6 个原因
这是 Day 16 非常重要的一部分。
❌ 1. 少了"访问登录页"这一步
导致缺少 Cookie / token。
❌ 2. 请求 Headers 与浏览器不一致
服务器拒绝。
❌ 3. 少传了隐藏参数
例如 csrf_token。
❌ 4. 用 requests.post,但没用 Session
Cookie 丢失,登录无效。
❌ 5. 直接复制接口,不理解流程
接口是"有上下文"的。
❌ 6. 登录成功了,但没验证是否真的成功
一定要访问 登录后专属页面 做验证。
🧠 八、一个非常重要的爬虫思维(请记住)
登录不是一个请求,而是一串请求。
你要做的不是"把某个接口抄下来",
而是:
-
复现请求顺序
-
复现参数来源
-
复现身份变化
这是爬虫工程师和"脚本搬运工"的本质区别。
📌 九、当前阶段你要做到什么程度?
在 Day 16 这个阶段,你的目标不是:
❌ 破解复杂加密
❌ 绕过验证码
而是:
✔ 能定位登录接口
✔ 能看懂参数结构
✔ 能复现基础登录流程
✔ 能判断失败原因
✔ 能用 Session 管理登录状态
这已经超过 80% 新手 了。
✅ 总结
今天你真正学会了:
✔ 爬虫视角下"登录"的本质
✔ 如何用 Network 拆解登录流程
✔ 如何定位真正的登录接口
✔ 登录请求中的三类参数
✔ 用 Session 复现登录流程
✔ 新手登录失败的常见原因
✔ 登录分析的正确思维方式
从 Day 16 开始,你已经正式进入 "可拆解真实网站的爬虫阶段"。