3

urllib を使用して Web サイトにログインしようとしています。これは私の会社の内部 Web サイトです。

ログインページは次のようになります。

<form id="login" action="/accounts/login/" method="POST">
<label for="username">Username</label>
<input name="username" type="text" class="text"><br>
<label for="password">Password</label>
<input name="password" type="password" class="text"><br>
<input name="login_submit" type="submit" value="Sign in" class="submit">

私のpythonは次のようになります:

url = 'http://10.188.36.250/accounts/login/'
values = {'user_name':'xxxx', 'password':'xxxxx'}
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
res = urllib2.urlopen(req)

私は戻ってきます:

urllib2.HTTPError: HTTP エラー 403: 禁止されています

私は何を間違っていますか?

4

3 に答える 3

3

「username」の代わりに「user_name」をキーとして使用することを除いて、すべて正しく行っています。フォームの変数に注意してください。

于 2012-09-04T22:12:28.360 に答える
1

デフォルトの urllib2 open は Cookie をうまくサポートしていません。それは実際には何もうまくサポートしていません。

urllib2 を使用してタスクを実行するには、 および を参照してurllib2.HTTPCookieProcessor()くださいurllib2.build_opener()。前者は後者に渡され、ページを開きます。正確には思い出せませんが、コードは次のようになります。

opener= urllib2.build_opener( urllib2.HTTPCookieProcessor() )
req = urllib2.Request( url , data )
res = opener.open( req )

私はまた、requestsインターネットのようなことをPythonであまり吸わないようにするモジュールを見ることをお勧めします(http://docs.python-requests.org/en/latest/index.html

于 2012-09-04T22:59:43.503 に答える
1

これはすべて、接続でヘッダーを使用する必要があるためです。最も一般的な Web ブラウザーの 1 つを挿入します。あなたのヘッダーに。Mozilla - 少なくとも。あなたのコードは次のようになります -

req = urllib2.Request( url , data, headers=headers)

ヘッダー ={'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'}

于 2012-09-11T13:03:29.883 に答える