2013-08-29 33 views
0

我试图自动填充Sharepoint网站上的表单,但是我的Python脚本无法通过此身份验证框,当您从下面键入url时弹出。Python机械化表单身份验证错误

Auth Box

from base64 import b64encode 
import mechanize 

url = 'http://moss.micron.com/MFG/ProbeTest/Lists/Manufacturing%20Requests/AllItems.aspx' 
username = 'username' 
password = 'password' 

# I have had to add a carriage return ('%s:%s\n'), but 
# you may not have to. 
b64login = b64encode('%s:%s' % (username, password)) 

br = mechanize.Browser() 

br.addheaders.append( 
    ('Authorization', 'Basic %s' % b64login, ) 
) 

br.open(url)! 

这将导致以下错误:

Error

编辑:

这里是请求的页面上运行wget的结果。

--2013-08-30 11:16:17-- http://moss.micron.com/MFG/ProbeTest/Lists/Manufacturing%20Requests/AllItems.aspx 
Resolving moss.micron.com... 137.201.88.118 
Connecting to moss.micron.com|137.201.88.118|:80... connected. 
HTTP request sent, awaiting response... 
    HTTP/1.1 401 Unauthorized 
    Server: Microsoft-IIS/7.0 
    WWW-Authenticate: Negotiate 
    WWW-Authenticate: NTLM 
    X-Powered-By: ASP.NET 
    MicrosoftSharePointTeamServices: 12.0.0.6341 
    Date: Fri, 30 Aug 2013 17:16:17 GMT 
    Connection: keep-alive 
    Content-Length: 0 
Authorization failed. 
+0

请使用错误输出,即文本,而不是截图文本错误输出... – lpapp

+0

@Mark肯尼迪,你设法解决这个问题?我面临着完全相同的问题! – theAlse

回答

1

您的浏览器禁止在您的网站上使用robots.txt。

您可以设置mechanize.Browser忽略的robots.txt,通过发出请求之前: br.set_handle_robots(False)

或者,编辑您的robots.txt,允许那种连接。

如果您在mechanize.Browser中设置了自定义的UserAgent标头,以允许您进行筛选。

有关robots.txt的基本信息,请参阅here

+0

做出更改后,我得到一个新的错误:HTTP错误401:未授权 –

+0

我确定我的用户名/密码组合是正确的。这是因为我想连接到Sharepoint网站吗? –

+0

我认为它确实对某些浏览器进行过滤,试图在没有UserAgent头的情况下尝试访问它。 – DivinusVox

0

如果你能得到与PC站点,下载Fiddler2这将让你看到,当你登录所需要的交易。

编辑..好吧。显然你有一台PC。

+0

我已经运行了' wget'命令。 WWW-Authenticate值似乎跳到我身上。 –