国内 google depot_tools gclient SSLError hostname 错误解决
由于众所周知的原因,google的服务器在国内是被墙的。
我需要下载webrtc的源代码,根据google的readme,我需要使用 depot_tools gclient命令。
由于*.googlesource.com 和*.googleapis.com等很多url在此repo中被使用,而我们用工具比如XX-NET寻找到的可用gws IP的证书的hostname通常并不能匹配例如 *.googleapis.com 这些域名,api系列有自己的域名,但并不是那么容易找到并使用,所以不得不使用gws的IP。
但是执行命令会报告 SSLError hostname ******* 的错误。
我们修改 depot_tools\bootstrap\bootstrap.py ls 方法,在构造url请求时使用
data = requests.get(STORAGE_URL, params=dict( prefix=prefix, fields='items(name,md5Hash)' )).json()
变为
data = requests.get(STORAGE_URL, params=dict( prefix=prefix, fields='items(name,md5Hash)' ),verify=False).json()
还有一处
depot_tools\bootstrap\virtualenv\virtualenv_support\pip-6.0-py2.py3-none-any.whl
pip\download.py
修改方法 def _download_http_url(link, session, temp_dir):
由:
try: resp = session.get( target_url, # We use Accept-Encoding: identity here because requests # defaults to accepting compressed responses. This breaks in # a variety of ways depending on how the server is configured. # - Some servers will notice that the file isn't a compressible # file and will leave the file alone and with an empty # Content-Encoding # - Some servers will notice that the file is already # compressed and will leave the file alone and will add a # Content-Encoding: gzip header # - Some servers won't notice anything at all and will take # a file that's already been compressed and compress it again # and set the Content-Encoding: gzip header # By setting this to request only the identity encoding We're # hoping to eliminate the third case. Hopefully there does not # exist a server which when given a file will notice it is # already compressed and that you're not asking for a # compressed file and will then decompress it before sending # because if that's the case I don't think it'll ever be # possible to make this work. headers={"Accept-Encoding": "identity"}, stream=True, ) resp.raise_for_status() except requests.HTTPError as exc:
变为
try: resp = session.get( target_url, # We use Accept-Encoding: identity here because requests # defaults to accepting compressed responses. This breaks in # a variety of ways depending on how the server is configured. # - Some servers will notice that the file isn't a compressible # file and will leave the file alone and with an empty # Content-Encoding # - Some servers will notice that the file is already # compressed and will leave the file alone and will add a # Content-Encoding: gzip header # - Some servers won't notice anything at all and will take # a file that's already been compressed and compress it again # and set the Content-Encoding: gzip header # By setting this to request only the identity encoding We're # hoping to eliminate the third case. Hopefully there does not # exist a server which when given a file will notice it is # already compressed and that you're not asking for a # compressed file and will then decompress it before sending # because if that's the case I don't think it'll ever be # possible to make this work. headers={"Accept-Encoding": "identity"}, stream=True, verify=False, ) resp.raise_for_status() except requests.HTTPError as exc:
核心思路是使用
verify=False 参数跳过SSL证书校验

浙公网安备 33010602011771号