如何用Python Requests提交表单数据?解决提交链接未知问题
嘿,我来帮你搞定这个用Requests提交表单的难题!不用纠结提交链接的生成规则,咱们直接从浏览器开发者工具里扒现成的请求细节,一步步模拟就行:
处理未知提交链接的表单提交方案
1. 先从开发者工具扒全请求信息
打开浏览器F12调出开发者工具,切换到网络面板,然后手动提交一次表单:
- 找到提交时触发的POST请求(通常名称带
login/submit这类关键词) - 复制这个请求的完整URL(就是带
action=Login、module=Users这些Query参数的链接) - 记下请求里的所有Form data字段,包括
__vtrftk、sid这些动态生成的参数
2. 用Requests模拟完整提交流程
第一步:先拿初始页面的Cookie和动态参数
很多网站的__vtrftk、sid是在初始页面加载时生成的,所以得先请求初始链接把这些信息存下来:
import requests from bs4 import BeautifulSoup # 用Session维持会话,自动处理Cookie传递 session = requests.Session() # 请求初始页面,获取动态参数和Cookie initial_url = "你的初始链接地址" response = session.get(initial_url) # 解析页面源码,提取动态参数(如果参数在页面HTML里的话) soup = BeautifulSoup(response.text, "html.parser") vtrftk = soup.find("input", {"name": "__vtrftk"})["value"] sid = soup.find("input", {"name": "sid"})["value"]
第二步:构造表单数据并提交
把从开发者工具里拿到的所有Form字段整理成字典,然后发送POST请求:
# 构造完整的表单数据,别忘了加你的账号密码等必填项 form_data = { "__vtrftk": vtrftk, "sid": sid, "username": "你的用户名", "password": "你的密码" # 其他从开发者工具看到的Form字段也得加上 } # 用从开发者工具复制的完整提交URL submit_url = "https://目标网站域名/对应路径?action=Login&module=Users" # 发送提交请求 submit_response = session.post(submit_url, data=form_data) # 验证提交结果,比如检查响应里的关键词 if "登录成功" in submit_response.text: print("表单提交搞定啦!") else: print("提交失败,检查参数或Cookie是否正确哦")
3. 几个关键注意事项
- 一定要用
requests.Session(),它会自动帮你维持会话Cookie,避免因为Cookie丢失导致验证失败 - 如果
__vtrftk是JS生成的(不在页面HTML里),那要么模拟JS生成逻辑,要么直接从开发者工具的请求里复制参数值(注意这类参数可能有有效期,要及时用) - 有些网站会校验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" } # 在get和post请求里加上headers=headers参数
内容的提问来源于stack exchange,提问作者Range Way
相关产品推荐
相关产品推荐

