1

URLを渡し、POSTリクエストのチェックボックスをオフにするにはどうすればよいですか。

HTMLは次のようになります。

<input type="checkbox" name="encodeURL" ID="encodeURL" checked="checked">

私はリクエスト、サードパーティのPythonライブラリを次のように使用しています:

payload = {'u': 'http://www.google.com', 'encodeURL': '0'}
r = requests.post('http://www.website.com/', data=payload)

これまでのところ、「encodeURL」を「0」、「チェックなし」、「」に設定すると、0はチェックボックスがオフの状態でリクエストを送信しません。チェックボックスをオフにするために「encodeURL」に渡す値を見つけるにはどうすればよいですか?

4

2 に答える 2

3

概要 - 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)

説明

完全に直交するサーバー側の動作からhtmlマークアップ(例ではデフォルトでチェックボックスが設定されている場所)を区別する必要があります。どうやらやりたいことは、チェックボックスをオフにしてフォームを送信したときのブラウザーの動作を模倣することです。この場合、サーバーはパラメーターをまったく受信せず encodeURL要求から省略します。

HTML仕様も参照してください

フォームが送信されると、「オン」のチェックボックス コントロールのみが成功します。

アップデート

TamperData プラグインを使用して特定のケースを調査したところ、速度制限が Cookie を処理する方法に関係している可能性があることがわかりました。これは、リクエスト ライブラリのバグではなく、サイトの特性にすぎません。このコードはうまくいくようです:

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応答のチェックが外されます(それがあなたの意図したことです)。

于 2012-11-14T08:07:01.680 に答える
-1

// 小切手

document.getElementById("encodeURL").checked = true;

// チェックを外す

document.getElementById("encodeURL").checked = false;

jQuery (1.6+):

// 小切手

$("#encodeURL").prop("checked", true);

// チェックを外す

$("#encodeURL").prop("checked", false);
于 2012-11-14T07:22:53.943 に答える