ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

几次调用后,通过代理的urlib2.urlopen失败了

2019-07-04 23:57:35  阅读:235  来源: 互联网

标签:python authentication proxy urllib2 urlopen


编辑:经过多次摆弄后,似乎urlgrabber在urllib2失败的地方成功,即使告诉它在每个文件后关闭连接.似乎urllib2处理代理的方式可能有问题,或者我使用它的方式!
无论如何,这是在循环中检索文件的最简单的代码:

import urlgrabber

for i in range(1, 100):
    url = "http://www.iana.org/domains/example/"
    urlgrabber.urlgrab(url, proxies={'http':'http://<user>:<password>@<proxy url>:<proxy port>'}, keepalive=1, close_connection=1, throttle=0)

大家好 !

我正在尝试编写一个非常简单的python脚本来通过urllib2获取一堆文件.

这个脚本需要在工作中通过代理工作(如果在Intranet上抓取文件,即没有代理,我的问题就不存在了).

在使用“HTTPError:HTTP错误401:基本身份验证失败”的几个请求之后,所述脚本失败.知道为什么会这样吗?似乎代理拒绝我的身份验证,但为什么呢?前几个urlopen请求正确完成!

编辑:在请求之间添加10秒的休眠以避免代理可能执行的某种限制并未更改结果.

这是我的脚本的简化版本(显然已删除已识别的信息):

import urllib2

passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
passmgr.add_password(None, '<proxy url>:<proxy port>', '<my user name>', '<my password>')
authinfo = urllib2.ProxyBasicAuthHandler(passmgr)

proxy_support = urllib2.ProxyHandler({"http" : "<proxy http address>"})
opener = urllib2.build_opener(authinfo, proxy_support)
urllib2.install_opener(opener)

for i in range(100):
with open("e:/tmp/images/tst{}.htm".format(i), "w") as outfile:
    f = urllib2.urlopen("http://www.iana.org/domains/example/")
    outfile.write(f.read())

提前致谢 !

解决方法:

您可以使用urlgrabber模块中的keepalive处理程序来最小化连接数.

import urllib2
from keepalive import HTTPHandler
keepalive_handler = HTTPHandler()
opener = urllib2.build_opener(keepalive_handler)
urllib2.install_opener(opener)

fo = urllib2.urlopen('http://www.python.org')

我不确定这是否可以正常使用您的代理设置.
您可能必须破解keepalive模块.

标签:python,authentication,proxy,urllib2,urlopen
来源: https://codeday.me/bug/20190704/1382009.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有