SSL和NewConnectionError

时间:2019-07-31 20:15:43

标签: python python-requests

我想从Alexa爬取前100万名的给定列表,以检查哪个网站仍通过http://提供访问权限,并且不要重定向到https://。 如果网页未重定向到https://域,则应将其写入csv文件。

当我添加一堆多个URL时出现问题。超过两个错误:

  1. ssl.SSLError:[SSL:SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3警报握手失败(_ssl.c:1056

  1. requests.exceptions.ConnectionError:HTTPConnectionPool(host ='17ok.com',port = 80):URL超过了最大重试次数:/(由NewConnectionError(':导致:无法建立新连接:[Errno 11001] getaddrinfo失败')

我尝试了以下主题和文档中提到的机会:

  1. https://2.python-requests.org//en/latest/user/advanced/#ssl-cert-verification 编辑:示例URL:https://requestb.in实际上引发404错误,可能甚至不存在(?)
  2. Python Requests throwing SSLError
  3. Python Requests: NewConnectionError
  4. requests.exceptions.SSLError: HTTPSConnectionPool: (Caused by SSLError(SSLError(336445449, '[SSL] PEM lib (_ssl.c:3816)')))

和其他一些交付的解决方案。

设置verify = False的选项很有帮助,当它用于几个URL时有用,但是当使用“列表”> 10个URL时却无济于事。我在Win10机器和Ubuntu 16.04上尝试了我的程序。 不出所料,同样的问题。我还尝试了使用Sessions的选项,并安装了Sugested的证书库。

如果我只是称呼三个页面,例如“ http://www.example.com”,“ https://www.github.com”和“ http://www.python.org”,那没什么大不了的,并且提供了解决方案。当使用Alexa列表中的一堆URL时,头痛就开始了。

这是我的代码,仅用于3-4个网址时有效:

import requests
from requests.utils import urlparse

urls = ['http://www.example.com',
        'http://bloomberg.com',
        'http://github.com',
        'https://requestbin.fullcontact.com/']

with open('G:\\Request_HEADER_Suite/dummy/http.csv', 'w') as f:
    for url in urls:
        r = requests.get(url, stream=True, verify=False)
        parsed_url = urlparse(r.url)
        print("URL: ", url)
        print("Redirected to: ", r.url)
        print("Status Code: ", r.status_code)
        print("Scheme: ", parsed_url.scheme)
        if parsed_url.scheme == 'http':
            f.write(url + '\n')

我希望至少检索具有100个URL的列表。该代码应写入可通过http://访问的URL,并且不要将其重定向到https://到csv文件或补充数据库中,并忽略所有带有https://的URL。

由于它仅适用于少数几个URL,因此我希望有一个稳定的机会进行较大的扫描。

但是有2个错误引发并破坏程序。是否值得尝试使用pytest解决方法?还有其他建议吗?预先感谢。

编辑: 这是一个列表,将引发错误。仅作澄清,此列表来自基于Alexa-Top-1-Million的研究。

urls = ['http://www.example.com',
        'http://bloomberg.com',
        'http://github.com',
        'https://requestbin.fullcontact.com/',
        'http://51sole.com',
        'http://58.com',
        'http://9gag.com',
        'http://abs-cbn.com',
        'http://academia.edu',
        'http://accuweather.com',
        'http://addroplet.com',
        'http://addthis.com',
        'http://adf.ly',
        'http://adhoc2.net',
        'http://adobe.com',
        'http://1688.com',
        'http://17ok.com',
        'http://17track.net',
        'http://1and1.com',
        'http://1tv.ru',
        'http://2ch.net',
        'http://360.cn',
        'http://39.net',
        'http://4chan.org',
        'http://4pda.ru']

我仔细检查了一下,最后一次错误以URL 17.ok.com开始。但是我也尝试了使用URL的不同列表。感谢您的支持。

0 个答案:

没有答案