基于Python Requests的投票请求:验证链接与Cookies格式
针对你的投票代码的检查与建议
请求链接是否正确?
从你的代码逻辑来看,POST目标链接http://www.xtremetop100.com/in-post.php?site=1132347673和Referer指向的http://www.xtremetop100.com/in.php?site=1132347673是匹配的——这类投票平台通常会先在in.php展示投票表单,再将提交请求发送到in-post.php处理,这个链路是合理的。
不过要100%确认链接正确性,建议你用浏览器开发者工具(F12→网络面板)手动操作一次投票,查看表单提交时实际的POST请求URL。如果浏览器里的请求地址和代码里的完全一致,那链接就是正确的。
Cookies的格式是否正确?
这里有两个核心点需要注意:
- 参数名错误:requests库的
post方法中,携带Cookie的参数是小写的cookies,你代码里写的是大写的Cookies,这会导致Cookie无法被正确携带,直接引发请求失败,必须改成小写。 - 字典格式本身合规:你定义的Cookie字典,键值对的格式是符合要求的——字符串类型的键对应字符串(或变量)类型的值,这部分没问题。但要注意
cfduid和captcha_response这两个变量必须提前赋值(比如从浏览器Cookie中复制真实值,或者通过验证码识别接口获取),否则代码会抛出NameError。
其他影响运行的细节修正
除了上面的核心问题,还有几个小细节需要调整:
- Python版本兼容:
print response.status_code是Python 2的写法,如果你用Python 3,需要改成print(response.status_code)。 - 重复导入冗余:你同时写了
import time和from time import sleep,保留其中一个即可,比如保留import time后用time.sleep(5)。 - 手动设置Content-Length风险:你在headers里手动指定了
Content-Length: '440',但requests会自动计算请求体长度,手动设置的数值如果和实际数据长度不匹配,会被服务器拒绝,建议删掉这个header。 - Session的Cookie使用优化:既然用了
requests.Session(),更推荐用s.cookies.update(Cookies)把Cookie添加到Session中,而非在每次post请求里单独传递,这样Session会自动维持Cookie状态,更贴近浏览器的真实行为。 - 缺失变量补全:
captcha_response和cfduid这两个变量没有定义,必须补充赋值逻辑(比如替换成你从浏览器获取的真实值)。
修正后的核心代码片段参考
import requests import time url = 'http://www.xtremetop100.com/in-post.php?site=1132347673' s = requests.Session() proxy = "8.8.8.8:8080" # 移除手动设置的Content-Length s.headers.update({ 'Host': 'www.xtremetop100.com', 'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:51.0) Gecko/20100101 Firefox/51.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Referer': 'http://www.xtremetop100.com/in.php?site=1132347673', 'DNT': '1', 'Connection': 'close', 'Upgrade-Insecure-Requests':'1', 'Content-Type': 'application/x-www-form-urlencoded', }) proxy = {'http': 'http://' + proxy, 'https': 'https://' + proxy} # 补全缺失的变量(替换为实际有效内容) cfduid = "your-real-cfduid-value" captcha_response = "your-real-recaptcha-response" data = { 'site' :"1132347673", 'secure_captcha_check':"6110", 'g-recaptcha-response':captcha_response, 'ticki' :"Vote+for+ZeroConquer[New+Server]" } cookies = { 'flowridaoookie':"1",'_gid':"GA1.2.1228802977.1547667122",'_gat_gtag_UA_116540956_1':"1",'_ga':"GA1.2.1330506724.1547667122",'__cfduid':cfduid,'__atuvs':"5c42ed6d02994f98001",'__atuvc':"156|3" } # 将Cookie注入Session s.cookies.update(cookies) response = s.post(url, data=data, proxies=proxy) time.sleep(5) print(response.status_code)
内容的提问来源于stack exchange,提问作者damar
相关产品推荐
相关产品推荐

