使用公司代理使Python3.x Slack(松弛客户端) [英] make Python 3.x Slack (slackclient) use a corporate proxy

查看:30
本文介绍了使用公司代理使Python3.x Slack(松弛客户端)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些Python3代码,可以让它使用模块slackClient来发布到频道,没有问题。然而,如果我从我们的公司服务器上运行这段代码,其中所有流量都需要通过代理,它就会失败。我知道代理服务器和端口,必须使用它们从我们的服务器运行PIP,如下所示:

pip install --proxy proxy.evilcorp.com:8080 slackclient

这很管用。如果我不代理PIP,它将无法按预期进行连接。所以这告诉我,我只需要弄清楚如何让我的松散客户端代码使用代理,但如何呢?以下是我的代码:

from slackclient import SlackClient

def get_slackclient():
    token = "blah-blah-token"
    sc = SlackClient(token)
    return sc

def post_slackmessage(username,channel,text):
    sc = get_slackclient()
    try:
        sc.api_call("chat.postMessage",channel=channel,text=text,username=username,unfurl_links="true")
    except:
        print ("failed to post messaage to slack")

post_slackmessage("test_slack", "test", "hurrah it posted")

我似乎就是想不出将代理设置放在哪里,我肯定遗漏了一些简单的东西。我愿意接受其他开箱即用的想法,但我不能真正在服务器上安装任何东西来使所有流量通过代理或更改代理设置。

推荐答案

算出来了。我把这个留在这里,以防其他人也有同样的问题。看起来它是内置的,只需传入代理字典即可。

def get_slackclient():
    #https://api.slack.com/custom-integrations/legacy-tokens
    token = "blah-blah-blah"
    proxies = dict(https="proxy.evilcorp.com:8080", http="proxy.evilcorp.com:8080")
    sc = SlackClient(token, proxies=proxies)
    return sc

嗯,这很容易:)

更新

如果您碰巧升级到最新的SLACK模块,它会有一点不同,只支持http://代理(对您来说不安全!)。并且传入str而不是dict,因此只传递一个代理。

只需更改为:

proxy = "proxy.evilcorp.com:8080"
sc = slack.WebClient(token, timeout=60, proxy=proxy)

您会注意到,对API的实际调用也发生了更改,如下所示:

sc.chat_postMessage(channel=thechannel, text=thetext, username=theusername, unfurl_links="true")

这篇关于使用公司代理使Python3.x Slack(松弛客户端)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆