Mechanize(Python)失败了401我打开http摘要网址。我用Google搜索并尝试调试但没有成功。
我的代码看起来像这样。
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)
答案 0 :(得分:6)
Mechanize声称参数应该是uri,用户名和密码作为参数,但是你有四个参数。 urllib2.add_password有四个参数是正确的,但第一个参数应该是领域,而不是uri。
http://wwwsearch.sourceforge.net/mechanize/
我会先尝试改变它。
trac是否需要消化?如果不是,下一步可能是尝试使用基本身份验证,作为测试是否有效,因为你只需添加addHeader:
import base64
from mechanize import Browser
browser = Browser()
browser.addheaders.append(('Authorization', 'Basic %s' % base64.encodestring('%s:%s' % (user, pwd))))
答案 1 :(得分:4)
对于使用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)
答案 2 :(得分:1)
#!/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
答案 3 :(得分:0)
根据您的Web自动化项目的复杂程度,请考虑使用iMacros。与Mechanize不同,它在Web浏览器中运行,因此它适用于大多数开箱即用的网站。
我通过命令行(在我们的Linux服务器上)使用免费的Firefox插件和通过COM对象使用iMacros Scripting Edition(在Windows VMware上使用Flash和Java的网站)。
命令行(免费软件和开源):http://wiki.imacros.net/iMacros_for_Firefox#Command_Line_Support
COM对象(需要付费版本):wiki.imacros.net/Python
添