首页 > 解决方案 > python请求代理不适合我

问题描述

我的参考代码:

header = {"Content-Type": "application/json"}
proxyDict = {
    "all_proxy": "http://proxy.com:8080",
    "http_proxy": "http://proxy.com:8080",
    "https_proxy": "http://proxy.com:8080",
    "ftp_proxy": "http://proxy.com:8080",
    "ALL_PROXY": "http://proxy.com:8080",
    "HTTP_PROXY": "http://proxy.com:8080",
    "HTTPS_PROXY": "http://proxy.com:8080",
    "FTP_PROXY": "http://proxy.com:8080"
}

try:
    res = requests.post('slack_url', json={"text": "text"}, headers=header, proxies=proxyDict, verify=False)
    print('Success!')
except:
    print("unable to send a slack message")

当我运行这段代码时,它就像代理从未被读取并超时一样运行。但是,当我手动设置环境变量时,它工作得很好。

问题是我需要这部分作为气流服务运行,因此需要在运行时设置代理。

我唯一能想到的是请求库需要一个实际的 IP 地址并且不能使用 proxy.com(只是替换公司 URL,而不是我正在使用的实际 URL)。在这种情况下,我需要在不使用 IP 的情况下解决问题。

有任何想法吗?

标签: pythonpython-requestsenvironment-variablesairflowslack

解决方案


proxyDict以错误的方式设置你的。您只需要在该字典中设置一个代理。

proxy = "https://proxy.com:8080"
proxies = {'https': proxy}

然后在请求中设置这个代理:

res = requests.post('slack_url', json={"text": "text"}, headers=header, proxies=proxies, verify=False) #you should never use verify=False as it's not secure

如果您想从代理列表中选择一个随机代理,只需将所有代理放在一个数组中并随机选择一个。

import random
myProxies = ["http://proxy.com:8080","http://proxy.com:8080","http://proxy.com:8080"]
proxies = {'https': random.choice(myProxies)}

推荐阅读