请求库Python中的代理设置

时间:2015-11-25 05:01:02

标签: python python-requests firewall

我有一个Python脚本用于连接到Parse.com(远程服务器)并上传文件。该脚本运行在位于公司防火墙后面的服务器上。

import env
import json
import requests
from requests.auth import HTTPProxyAuth

def uploadFile(fileFullPath):
    print "Attempting to upload file: " + fileFullPath

    proxies = {
        "http": "http://10.128.198.14",
        "https": "http://10.128.198.14"
    }

    auth = HTTPProxyAuth('MyDomain\MyUsername', 'MyPassord')

    headers = {
        "X-Parse-Application-Id": env.X_Parse_APP_ID,
        "X-Parse-REST-API-Key": env.X_Parse_REST_API_Key,
        "Content-Type": "application/pdf"
    }   

    f = open(fileFullPath, 'r')
    files = {'file': f}
    r = requests.post(env.PARSE_HOSTNAME + env.PARSE_FILES_ENDPOINT + "/" + env.PARSE_FILE_NAME, files=files, headers=headers, timeout=10, verify=False, proxies=proxies)
    print r.text

当我从命令提示符处使用此模块时,我收到以下消息:

ConnectionError thrown. Details:  Cannot connect to proxy. Socket error: Tunnel connection failed: 407 Proxy Authentication Required.

我很确定用户名和密码都是正确的。

任何解决方案?谢谢!

1 个答案:

答案 0 :(得分:1)

407错误的原因是代理本身需要进行身份验证。因此,对于您的proxies字典,请执行以下操作:

proxies = {
    "http": "http://user:pass@10.128.198.14",
    "https": "http://user:pass@10.128.198.14"
}

填写user网址中的passproxies个变量。 Here是指向如何构建代理对象并对其进行身份验证的相关请求文档的链接。