python mechanize可以处理HTTP身份验证吗?

2024-05-15 04:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

Mechanize(Python)无法使用401打开http摘要url。我搜索并试着调试,但没有成功。

我的代码是这样的。

import mechanize

project = "test"
baseurl = "http://trac.somewhere.net"
loginurl = "%s/%s/login" % (baseurl, project)
b = mechanize.Browser()
b.add_password(baseurl, "user", "secret", "some Realm")
b.open(loginurl)

Tags: 代码testimportbrowserprojecthttpurlnet
3条回答

对于mechanize的http身份验证,您需要提供add_password方法的完整url,而不仅仅是主机基址。

import mechanize

project = "test"
baseurl = "http://trac.somewhere.net"
loginurl = "%s/%s/login" % (baseurl, project)
b = mechanize.Browser()
b.add_password(loginurl, "user", "secret", "some Realm")
b.open(loginurl)
#!/usr/bin/env python
# -*- coding: utf-8 -*- 

import mechanize

a=mechanize.Browser()
a.open("http://www.facebook.com/login.php")
a.select_form(nr=0)  #form number.
a["email"]="mailaddress"
a["pass"]="password"
a.submit()
print a

Mechanize声称参数应该是uri、username和password作为参数,但是您有四个参数。四个参数对于urllib2.add_password是正确的,但是第一个参数应该是领域,而不是uri。

http://wwwsearch.sourceforge.net/mechanize/

我想先改变一下。

trac需要消化吗?如果没有,下一步可以尝试使用basic auth作为测试,看看它是否有效,因为您可以使用addHeader添加它:

import base64
from mechanize import Browser
browser = Browser()
browser.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (user, pwd))))

相关问题 更多 >

    热门问题