Python:使用请求通过代理访问HTTPS URL

时间:2015-05-12 20:09:07

标签: python-2.7 https python-requests

import shutil
import requests
import json

proxy = {
'user' : 'user',
'pass' : 'password',
'host' : "test.net",
'port' : 8080
}

url = 'https://github.com/timeline.json'
response = requests.get(url,verify=True, proxies={"https" : \
"http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy})

with open(r'..\test.json','wb') as out_file:
      out_file.write(response.text)
print response

我正在尝试使用请求在办公环境中通过代理访问HTTPS链接(例如https://github.com/timeline.json)。

访问HTTP链接似乎工作正常。在HTTPS中获取SSL错误。 请提供代码中缺少的内容。谢谢!

收到错误:

raise SSLError(e)
requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

1 个答案:

答案 0 :(得分:0)

我使用的是您提供的几乎相同的代码,并搜索了代理服务器。一切都很好。

尝试查看文档here requests proxies。请注意,Github已弃用https://github.com/timeline.json,请尝试https://api.github.com/events

根据文件: 要在代理中使用HTTP Basic Auth,请使用http://user:password@host/语法:

proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
}

你最后错过了/吗?试一试。

import requests

url = 'https://api.github.com/events'
proxy = {
        "http" : "http://211.162.xxx.xxx:80"
        }
response = requests.get(url, verify=True, proxies=proxy)
print response.status_code
if response.status_code == requests.codes.ok:

    response.encoding = 'utf-8'
    jsontxt = response.json()
    print jsontxt