为什么 http 请求挂在我的 python 脚本中?

发布于 2024-12-18 07:19:10 字数 691 浏览 1 评论 0原文

我的一个脚本在 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)

我不认为我的代码有什么问题,但是每次当涉及到对特定 url 的某个 http POST 请求时,它都会挂在那台 2003 年的计算机上(仅在该网址上)。这一切的原因可能是什么?我应该如何调试?

顺便说一句,该脚本直到几个小时前都运行良好。并且没有更改任何设置。

One of my script runs perfectly on an XP system, but the exact script hangs on a 2003 system. I always use mechanize to send the http request, here's an example:

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)

I don't think there's anything wrong with my code, but each time when it comes to a certain http POST request to a specific url, it hangs on that 2003 computer (only on that url). What could be the reason of all this and how should I debug?

By the way, the script runs all right until several hours ago. And no setting is changed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩扇题诗 2024-12-25 07:19:10

您可以使用 FiddlerWire Shark 查看 HTTP 级别发生的情况。

还值得检查该计算机是否已被阻止向您尝试访问的计算机发出请求。使用常规浏览器(带有您自己的 HTML 表单)和 Mechanize 使用的 HTTP 库,看看是否可以手动构造请求。 Fiddler 也可以帮助你做到这一点。

You could use Fiddler or Wire Shark to see what is happening at the HTTP-level.

It is also worth checking out if the machine has been blocked from making requests to the machine you are trying to access. Use a regular browser (with your own HTML form), and the HTTP library used by Mechanize and see if you can manually construct a request. Fiddler can also help you do this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文