1

私は urllib2 と urllib の使用を学んでいます。そして、http://docs.python.org/howto/urllib2.htmlにある例に従って同じスクリプトを書きました。しかし、それは動作していないようです.何かの応答は、ログインページのソースコードです!そして、私はfirebugを使用して、同じソースコードが返されるかどうかを確認しました,答えはイエスです!しかし、私はまだ私のブラウザで私のブログにログインできます. !どのような知識が必要ですか? Http? また ......

#! /usr/bin/python
# -*- coding: utf-8 -*-

import urllib2
import urllib

url='http://www.mywordpressblog.com/wp-login.php'
values={'log':'my login name',
        'pwd':'my password'}
data=urllib.urlencode(values)
req=urllib2.Request(url,data)
response=urllib2.urlopen(req)
the_page=response.read()
print the_page
4

3 に答える 3

3

この原則が Wordpress で機能するかどうかはわかりませんが、基本的な http 認証でコードを強化するには、次のことを行う必要があります。

import urllib2
import urllib
import base64


USERNAME="user"
PASSWORD="password"

url='http://www.mywordpressblog.com/wp-login.php'
req = urllib2.Request(url)

# create http header with base64 encoded user and password
base64string = base64.encodestring(
    '%s:%s' % (USERNAME, PASSWORD))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)

response =urllib2.urlopen(req)
the_page=response.read()
print the_page

詳細については、基本認証のチュートリアルを参照してください。

アップデート

以下に示すように、いずれかのブラウザーと urlencoded 資格情報をエミュレートPOSTして、ヘッダー フィールドを含むhttps 要求を発行する必要があります。User-Agent

import urllib2
import urllib


url='https://en.wordpress.com/wp-login.php'

headers = [
  ("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5")]

data = [
    ("log","YOURNAME"), 
    ("pwd","YOURPASSWORD"), 
    ("testcookie",1), 
    ("submit","Log In"), 
    ("redirect_to","http://wordpress.com/"), 
    ("rememberme","forewer")]

req = urllib2.Request(url, urllib.urlencode(dict(data)), dict(headers))
response = urllib2.urlopen(req)

the_page=response.read()
print the_page
于 2012-05-17T07:21:15.900 に答える
0

を使用しrequestsます。

data = {'username': 'foo', 'password': 'secret'}
url = 'http://www.example.com/'
r = requests.post(url, data=data)
于 2012-05-18T19:48:44.617 に答える
0

ブログにログインするには、HTTPBasicAuthHandler を使用する必要があります。「基本認証」セクションのドキュメントを参照してください。

于 2012-05-17T06:40:57.387 に答える