Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用Mechanize打开SSL URL_Python_Ssl_Mechanize_Urllib2 - Fatal编程技术网

在Python中使用Mechanize打开SSL URL

在Python中使用Mechanize打开SSL URL,python,ssl,mechanize,urllib2,Python,Ssl,Mechanize,Urllib2,如何使用mechanize在Python中打开SSL URL 我尝试在Ubuntu上使用Python 2.7.3进行一次简单的页面检索,如: import mechanize browser = mechanize.Browser() resp = browser.open('https://mydomain.com') 但它抛出了一个错误: urllib2.URLError: <urlopen error [Errno 1] _ssl.c:504: error:140773E8:SSL

如何使用mechanize在Python中打开SSL URL

我尝试在Ubuntu上使用Python 2.7.3进行一次简单的页面检索,如:

import mechanize
browser = mechanize.Browser()
resp = browser.open('https://mydomain.com')
但它抛出了一个错误:

urllib2.URLError: <urlopen error [Errno 1] _ssl.c:504: error:140773E8:SSL routines:SSL23_GET_SERVER_HELLO:reason(1000)>
urllib2.URLError:
奇怪的是,当我在Fedora上的Python2.6.4下运行相同的代码时,我没有遇到这个错误

据推测,这可能不是mechanize的直接问题,而是urllib2和底层SSL C库的问题。谷歌搜索显示点击率很低。有解决办法吗


编辑:我通过建议的解决方法发现了这一点(基本上Python尝试将SSLv23用于仅SSLv3的站点),但该代码反而导致错误
httplib.BadStatusLine:“

此问题可能是由于在web服务器上禁用了SSLv2,但是Python2.x在默认情况下尝试与协议_SSLv23建立连接。这种情况发生在

不必复制和编辑Python库模块,您可以通过覆盖ssl_version关键字参数在ssl模块中使用monkey patch ssl.wrap_socket()。以下代码可以按原样使用。在提出任何请求之前,请将此信息放在程序的开头

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)

此问题可能是由于在web服务器上禁用了SSLv2,但Python2.x在默认情况下尝试与协议_SSLv23建立连接。这种情况发生在

不必复制和编辑Python库模块,您可以通过覆盖ssl_version关键字参数在ssl模块中使用monkey patch ssl.wrap_socket()。以下代码可以按原样使用。在提出任何请求之前,请将此信息放在程序的开头

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)

有没有可能你在windows上?@samy.vilar,没有,我相应地更新了我的问题。我认为这是一个错误,虽然不确定,但你可以检查它很酷。有没有可能你在windows上?@samy.vilar,没有,我相应地更新了我的问题。我认为这是一个错误,尽管不确定,你可以检查它很酷。