urllib2.urlopen上HTTP 400 Bad Request响应的语法帮助

时间:2012-01-10 18:32:57

标签: python urllib2

我有一段代码,我登录到网站 - 通过代理服务器和使用网站凭据。我登录就好了。然后我尝试进入一个页面,在那里我发送了我得到的会话ID,看起来像是cookie 发送得很好,但我得到一个HTTP 400错误请求。请查看我的请求的语法,让我知道我错过了什么。我真的很感激任何反馈!

提前多多感谢, 伊戈尔

import urllib, urllib2, cookielib   
proxy_info = {
'user' : 'myuser',
'pass' : 'mypassword',
'host' : "myproxy.company.com",
'port' : 8080 
}  

proxy_support = urllib2.ProxyHandler({"http" : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})

cj = cookielib.CookieJar()   
cookie_h = urllib2.HTTPCookieProcessor(cj)  
opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler(debuglevel=1) , cookie_h)   
headers={'User-agent' : 'Mozilla/5.0'}     

urllib2.install_opener(opener)    
url = 'http://www.targetsite.com/LogIn.asp?user_id=&user_p assword=myapppassword'  
f = urllib2.urlopen(url)  
html = f.read()  
print html  
url2 = 'http://www.targetsite.com/Main.asp?uid=&sid=3294799 60 HTTP/1.1'  
response = urllib2.urlopen (url2)  
html2 = response.read()  
print html2  

我得到了回复:

send: 'GET http://www.targetsite.com/Main.asp?u...&sid=329479960 HTTP/1.1 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: www.targetsite.com\r\nProxy-Authorization: Basic aWNhcnJlb246YWdqYTEZ\r\nCookie: ASPSESSIONIDAQBASTST=CGDGDKDBEDEAGJJOINKPFGCC\r\nC onnection: close\r\nUser-Agent: Python-urllib/2.7\r\n\r\n'  
reply: 'HTTP/1.1 400 Bad Request\r\n'  
header: Cache-Control: no-cache  
header: Pragma: no-cache  
header: Content-Type: text/html; charset=utf-8  
header: Proxy-Connection: close  
header: Connection: close  
header: Content-Length: 730  
Traceback (most recent call last):  
File "C:\Aptana\myDev\root\nested\LaunchApp.py", line 45, in <module>  
response = urllib2.urlopen (url2)  
File "C:\PYTHON27\LIB\urllib2.py", line 126, in urlopen  
return _opener.open(url, data, timeout)  
File "C:\PYTHON27\LIB\urllib2.py", line 400, in open  
response = meth(req, response)  
File "C:\PYTHON27\LIB\urllib2.py", line 513, in http_response  
'http', request, response, code, msg, hdrs)  
File "C:\PYTHON27\LIB\urllib2.py", line 438, in error  
return self._call_chain(*args)  
File "C:\PYTHON27\LIB\urllib2.py", line 372, in _call_chain  
result = func(*args)  
File "C:\PYTHON27\LIB\urllib2.py", line 521, in http_error_default  
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)  
urllib2.HTTPError: HTTP Error 400: Bad Request   

2 个答案:

答案 0 :(得分:0)

urlurl2无效。尝试:

url = 'http://www.targetsite.com/LogIn.asp?' + urllib.urlencode(
    {"user_id": "", "user_p assword": "myapppassword"})
url2 = 'http://www.targetsite.com/Main.asp?' + urllib.urlencode(
    {"uid": "", "sid": "3294799 60 HTTP/1.1"})

名称user_p assword不应包含空格。 sid的值似乎也很可疑。它可能是复制粘贴错误。

答案 1 :(得分:0)

为什么要在第二个网址中发送“HTTP / 1.1”?该语法似乎无效,ulrlib2无论如何都发送HTTP / 1.1。从跟踪中,这看起来就是问题所在。