Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用urllib2和urllib生成一个脚本,自动登录到我的wordpress博客?_Python_Http - Fatal编程技术网

如何在python中使用urllib2和urllib生成一个脚本,自动登录到我的wordpress博客?

如何在python中使用urllib2和urllib生成一个脚本,自动登录到我的wordpress博客?,python,http,Python,Http,我正在学习使用urllib2和urllib。我根据上给出的示例编写了相同的脚本。但它似乎不起作用。响应是登录页面的源代码!我用firebug检查是否返回了相同的源代码,答案是肯定的!但我仍然可以在我的浏览器上登录我的博客!我需要知道什么样的知识?Http?或者 #! /usr/bin/python # -*- coding: utf-8 -*- import urllib2 import urllib url='http://www.mywordpressblog.com/wp-login.

我正在学习使用urllib2和urllib。我根据上给出的示例编写了相同的脚本。但它似乎不起作用。响应是登录页面的源代码!我用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

您必须使用HTTPBasicAuthHandler登录您的博客。请参阅“基本身份验证”部分的文档。

我不确定这一原则是否适用于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
欲了解更多信息,请查看

更新

您应该发出https
POST
请求,请求的标题字段应为
User Agent
,模拟浏览器和URL编码凭据之一,如下所示:

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
使用


我发现自动处理web表单要容易得多。使用
live http header
插件,在执行登录时检查浏览器发送的所有头,然后尝试通过python脚本发送这些头。您的代码肯定缺少
User-Agent
标题,并且可能是
Referer
标题。看看(urllib2.Request)[docs.python.org/library/urllib2.html#urllib2.Request]如何用urllib2和python发送http头。这个方法可以用来登录我的路由器,但wordpress博客仍然不能用它登录!有什么解决办法吗?
data = {'username': 'foo', 'password': 'secret'}
url = 'http://www.example.com/'
r = requests.post(url, data=data)