Python 如何找到要传递的值以取消选中复选框?

Python 如何找到要传递的值以取消选中复选框?,python,post,Python,Post,如何在post请求中传递url并取消选中复选框 HTML如下所示: <input type="checkbox" name="encodeURL" ID="encodeURL" checked="checked"> 到目前为止,将“encodeURL”设置为“0”、“未选中”、“0”并没有在未选中复选框的情况下发布请求。 如何找到要传递给“encodeURL”的值以取消选中该复选框?//选中 document.getElementById("encodeURL").checked

如何在post请求中传递url并取消选中复选框

HTML如下所示:

<input type="checkbox" name="encodeURL" ID="encodeURL" checked="checked">
到目前为止,将“encodeURL”设置为“0”、“未选中”、“0”并没有在未选中复选框的情况下发布请求。 如何找到要传递给“encodeURL”的值以取消选中该复选框?

//选中

document.getElementById("encodeURL").checked = true;
$("#encodeURL").prop("checked", true);
//取消勾选

document.getElementById("encodeURL").checked = false;
$("#encodeURL").prop("checked", false);
jQuery(1.6+):

//检查

document.getElementById("encodeURL").checked = true;
$("#encodeURL").prop("checked", true);
//取消勾选

document.getElementById("encodeURL").checked = false;
$("#encodeURL").prop("checked", false);

摘要-TL/DR

要取消选中框,请在有效负载中排除它

payload = {'u': 'http://www.google.com'}
r = requests.post('http://www.website.com/', data=payload)
payload = {'u': 'http://www.google.com', 'allowCookies': 'on'}
r = requests.post('http://www.website.com/', data=payload)
要选中框-将其包括在有效负载中

payload = {'u': 'http://www.google.com'}
r = requests.post('http://www.website.com/', data=payload)
payload = {'u': 'http://www.google.com', 'allowCookies': 'on'}
r = requests.post('http://www.website.com/', data=payload)
解释

我们需要将html标记(在您的示例中默认设置了复选框)与完全正交的服务器端行为区分开来。显然,您想要做的是在提交带有未选中复选框的表单时模仿浏览器的行为。 在这种情况下,服务器不会接收任何
encodeURL
参数,只需从请求中忽略它即可

另见

提交表单时,只有“开”复选框控件可以成为

更新

在调查了您使用TamperData插件的具体情况后,我发现这可能与速度限制如何处理Cookie有关,所以这不是请求库的bug,只是一个站点特性。此代码似乎有效:

s = requests.session()
s.get('http://speed-limit.info/index.php')  # getting the cookies
response = s.post('http://speed-limit.info/includes/process.php?action=update', 
                  data={'u': 'stackoverflow.com', 'allowCookies': 'on'},
                  allow_redirects=True)

然后响应中的
encodeURL
被取消选中(我希望,这就是你的意思)。

我不确定你正在使用什么第三方库,或者如何处理它,但是在HTML方面,去掉
checked=“checked”
将生成一个未选中的框。我正在使用这个python库。我必须将encodeURL设置为“checked”以外的值,因为默认情况下它是选中的。encodeURL没有选中复选框,即“checked”属性is@jedwards我还通过了checked as checked=“”这个问题是关于Python的(嗯,不完全是这样,但无论如何这都不能回答)好的,在阅读了你的链接后,我明白我不能将encodeURL设置为任何内容。如果我在请求中省略了它,它仍然会被选中,因为它是默认选中的。@DaveCastillo“它仍然会被选中”-在哪里选中?提供请求的完整数据流(最好是服务器端代码)。我试图做的是传递url并取消选中站点上的EncryptURL。我试图将encodeURL设置为“0”的原因是,当我将url传递给“u”时,例如“它成功地以我的url作为变量发出post请求”。@DaveCastillo好,我明白了。同样,标记中默认选中复选框的事实与您需要发送的请求没有任何关系。服务器端逻辑不知道复选框等,它根据查询参数工作。从请求中省略
encodeURL
,这正是浏览器在您取消选中它时所做的。@DaveCastillo我做了一些额外的研究,并更新了答案(希望有帮助)。