发起简单POST请求始终返回"Invalid request",如何获取有效响应?
解决POST请求返回"Invalid request"的问题
可能的原因及解决方案
1. 添加必要的请求头
很多网站会验证请求的User-Agent字段,拒绝无标识的请求。你可以添加模拟浏览器的请求头:
import requests url = 'https://cs.deals/ajax/marketplace-search' form_data = {'appid': '730', 'sort': 'price', 'name':'sticker'} # 添加浏览器请求头 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', 'Referer': 'https://cs.deals/' } r = requests.post(url, data=form_data, headers=headers) response = r.text print(response)
2. 携带会话Cookies
如果网站需要会话验证,你需要先访问首页获取Cookies,再发送POST请求:
import requests url = 'https://cs.deals/ajax/marketplace-search' form_data = {'appid': '730', 'sort': 'price', 'name':'sticker'} 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' } # 创建会话自动保存Cookies session = requests.Session() session.get('https://cs.deals/', headers=headers) # 发送POST请求 r = session.post(url, data=form_data, headers=headers) response = r.text print(response)
3. 补充完整表单参数
通过浏览器开发者工具(F12→网络面板),找到该接口的实际请求,检查是否有遗漏的必填参数(如limit、offset等),将这些参数补充到form_data中。
注意事项
- 不要频繁发送请求,避免触发网站反爬机制导致IP被封禁。
- 若网站存在签名、Token等加密验证,需进一步分析请求中的加密逻辑。
内容的提问来源于stack exchange,提问作者Claytor
相关产品推荐
相关产品推荐

