如何使用Python的requests库登录无明显CSRF Token的网站
新手友好的无CSRF Token网站登录脚本指南
别担心,新手遇到这种情况太正常啦!没有CSRF Token的话,登录流程反而可能更简单,咱们一步一步来搞定~
第一步:先搞清楚登录的请求细节
首先你得用浏览器的开发者工具(按F12)抓个包,看看登录时网站到底要什么参数:
- 打开登录页面,F12切换到「Network」标签,勾选「Preserve log」
- 点击登录按钮,找到类型为「POST」的请求(一般就是登录请求)
- 查看这个请求的「Form Data」,里面就是你需要提交的参数(比如用户名、密码,可能还有
remember_me这类小参数) - 同时记下这个POST请求的URL(不是登录页面的URL,是实际接收登录数据的接口URL)
第二步:用Python的requests库实现登录
requests是处理HTTP请求的神器,新手也能快速上手。
先安装requests(如果没装的话)
打开命令行运行:
pip install requests<2.28.0 # 因为Python3.6不支持更高版本的requests
完整代码示例
import requests # 1. 创建Session对象,它会自动帮你管理Cookie,不用手动处理 session = requests.Session() # 2. 先访问登录页面,获取必要的Cookie(有些网站会检查你是否先打开过登录页) # 替换成目标网站的登录页面URL login_page_url = "https://xxx.com/login" # 加上User-Agent,模拟浏览器访问,避免被网站拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } session.get(login_page_url, headers=headers) # 3. 构造登录表单数据,键要和抓包看到的Form Data完全一致! # 比如抓包看到的是"user_name"就不能写成"username" login_data = { "username": "你的账号", "password": "你的密码" # 如果抓包还有其他参数,比如"remember": "on",就加上这一行 } # 4. 发送登录请求,替换成抓包得到的POST接口URL login_api_url = "https://xxx.com/api/login" response = session.post(login_api_url, data=login_data, headers=headers) # 5. 验证是否登录成功 # 替换成一个只有登录后才能访问的页面URL,再检查返回内容里的特征文本 test_url = "https://xxx.com/user_center" test_response = session.get(test_url, headers=headers) if "欢迎回来" in test_response.text: # 替换成你登录后页面会出现的文本 print("登录成功!接下来就可以处理xls下载啦~") else: print("登录失败啦!可能是参数不对,或者网站有其他验证机制,再去抓包核对下参数吧")
一些新手容易踩的坑
- 参数名一定要和抓包的完全一致:比如有的网站用户名参数是
user不是username,写错了肯定登不上 - 如果密码是加密的:抓包时如果看到密码不是你输入的明文,那得去看网站的JS代码,模拟它的加密逻辑(这一步稍微复杂点,实在搞不定可以再提问)
- 不要忽略User-Agent:很多网站会拦截没有User-Agent的请求,直接当成机器人
- Python3.6的兼容性:一定要装兼容3.6的requests版本,不然会报错
内容的提问来源于stack exchange,提问作者cloclododouce
相关产品推荐
相关产品推荐

