python urllib2:连接被对等方重置

2024-02-01

我有一个 Perl 程序,可以从我的大学图书馆的数据库中检索数据,并且运行良好。现在想用python重写但是遇到问题<urlopen error [errno 104] connection reset by peer>

Perl 代码是:

    my $ua = LWP::UserAgent->new;
    $ua->cookie_jar( HTTP::Cookies->new() );
    $ua->timeout(30);
    $ua->env_proxy;
    my $response = $ua->get($url); 

我写的python代码是:

    cj = CookieJar();
    request = urllib2.Request(url); # url: target web page 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
    opener = urllib2.install_opener(opener);
    data = urllib2.urlopen(request); 

我在家里使用VPN(虚拟专用网络)登录我大学的图书馆,我尝试了perl代码和python代码。 Perl代码按我的预期工作,但Python代码总是遇到“urlopen错误”。

我用谷歌搜索了这个问题,似乎 urllib2 无法加载环境代理。但根据 urllib2 的文档,urlopen() 函数可以透明地与不需要身份验证的代理一起工作。现在我感觉很混乱。有人能帮我解决这个问题吗?


我尝试按照 Uku Loskit 和 Mikko Ohtamaa 的建议伪造 User-Agent 标头,并解决了我的问题。代码如下:

    proxy = "YOUR_PROXY_GOES_HERE"
    proxies = {"http":"http://%s" % proxy}
    headers={'User-agent' : 'Mozilla/5.0'}
    proxy_support = urllib2.ProxyHandler(proxies)
    opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler(debuglevel=1))
    urllib2.install_opener(opener)

    req = urllib2.Request(url, None, headers)
    html = urllib2.urlopen(req).read()
    print html

希望它对其他人有用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python urllib2:连接被对等方重置 的相关文章

随机推荐