urllib2.urlopen中的HTTP 400错误响应的语法帮助
我有一段代码,用来通过代理服务器登录一个网站,并使用网站的账号密码。登录过程很顺利。然后我尝试进入一个页面,我把之前得到的会话ID发过去,虽然看起来Cookies也发送得很好,但我却收到了一个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
url
和 url2
是无效的。请尝试:
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
的值看起来有点可疑,可能是复制粘贴时出错了。
0
你为什么在第二个网址里发送“HTTP/1.1”呢?这个写法看起来不太对,而且ulrlib2本身会自动发送HTTP/1.1。从追踪记录来看,问题可能就出在这里。