【问题标题】:Error - urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol错误 - urlopen 错误 [Errno 8] _ssl.c:504: EOF 发生违反协议
【发布时间】:2012-07-31 03:38:48
【问题描述】:

我的目标是在输入谷歌搜索词后从第一页的所有链接中提取 html。我在代理后面工作,所以这是我的方法。

1.我第一次用mechanize在表单中输入搜索词,我正确设置了代理和机器人。

2.提取链接后,我使用了一个全局使用urllib2.ProxyHandler的开启器,单独打开url。

但是这给了我这个错误。想不通。

urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

【问题讨论】:

    标签: python proxy mechanize urllib2


    【解决方案1】:

    您可以通过覆盖 ssl_version 关键字参数对 ssl 模块中的 ssl.wrap_socket() 进行猴子修补,而不是复制和编辑 Python 库模块。以下代码可以按原样使用。在发出任何请求之前,将其放在程序的开头。

    import ssl
    from functools import wraps
    def sslwrap(func):
        @wraps(func)
        def bar(*args, **kw):
            kw['ssl_version'] = ssl.PROTOCOL_TLSv1
            return func(*args, **kw)
        return bar
    
    ssl.wrap_socket = sslwrap(ssl.wrap_socket)
    

    【讨论】:

    • 嗨,它就像一个魅力。你能解释一下这段代码在做什么
    【解决方案2】:

    这是一个已知的错误,但在此链接的 cmets 中提到了一些解决方案。看到他们,可能对你有帮助,bug url

    【讨论】:

    • 谢谢你,NIlesh。我发现this 很有帮助,尽管放弃 TLS2 可能不是最好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2015-11-13
    • 1970-01-01
    • 2015-05-13
    • 2016-03-17
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多