我有一些代码,使用机械化和美丽汤的网页抓取一些数据。代码在测试机器上运行良好,但生产机器阻塞了连接。我得到的错误是:
urlopen error [Errno 10053] An established connection was aborted by the software in your host machine我已经读过类似的帖子,但我找不到这个确切的错误。我试图抓取的网站是HTTPS,但我也有同样的错误发生在HTTP网站上。我使用的是python 2.6和mechanize 0.2.4。
这是由于代理,还是如错误所说,是由于我的本地计算机上的某些原因?我已经为mechanize编写了使用系统代理的代码:
br = mechanize.Browser()
br.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1')]
br.set_proxies({}) #will use system default proxy
page = br.open(url)
html = page.read()
soup = BeautifulSoup.BeautifulSoup(html)同样,这一切都可以在我的测试机器上运行,但是生产机器给出了10053的错误。
发布于 2011-03-11 23:18:25
这里的问题是一个基于主机的IDS阻止了连接。问题解决了。
我将我的python脚本添加到HIDS异常列表中。例外列表是我允许连接到互联网的文件列表。一旦它被添加到列表中,我就能够使用该脚本获得网络连接,并且没有进一步的问题。测试机器没有安装HIDS客户端,这就是为什么它允许我发言的原因。仅供参考,两台都有防火墙,但只有一台(生产机器)有HIDS。
HIDS是基于主机的入侵检测系统。如果网络安全团队使HIDS对您不可见,您可能不知道在哪里可以找到它。而且,即使你找到了它,你也不能禁用它。您可以询问您的安全团队是否可以为您的脚本添加例外。另一种绕过HIDS的秘密方法是将脚本构建到可执行文件中(使用Py2EXE),并将您创建的可执行文件重命名为HIDS异常列表中已有的内容。将其重命名为您的浏览器是一个很好的选择,因此,如果允许访问互联网,请将您的可执行文件重命名为firefox.exe。
https://stackoverflow.com/questions/5250183
复制相似问题