我的一个脚本在XP系统上完美运行,但确切的脚本挂在2003系统上。我总是使用mechanize来发送http请求,这是一个例子:
import socket, mechanize, urllib, urllib2
socket.setdefaulttimeout(60) #### No idea why it's not working
MechBrowser = mechanize.Browser()
Header = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)', 'Referer': 'http://www.porn-w.org/ucp.php?mode=login'}
Request = urllib2.Request("http://google.com", None, Header)
Response = MechBrowser.open(Request)
我认为我的代码没有任何问题,但每次遇到某个特定网址的某个http POST请求时,它都挂在那台2003计算机上(仅限该网址)。可能是这一切的原因以及我应该如何调试?
顺便说一下,脚本可以运行到几个小时前。并且没有更改设置。
答案 0 :(得分:2)
您可以使用Fiddler或Wire Shark来查看HTTP级别的情况。
还有必要检查机器是否已被阻止向您尝试访问的机器发出请求。使用常规浏览器(使用您自己的HTML表单)和Mechanize使用的HTTP库,看看您是否可以手动构建请求。提琴手也可以帮助你做到这一点。