如何讓itchat支持代理

老頭是真的老了,都奔五的人了。

如今中年男人工作壓力大,生活壓力大,而公司的壓力更大。在聽了python讓生活更美好的廣告后,老頭為了讓晚上還能早點回家,咬牙省下了一個月的私房錢買了兩本正版書,從此踏上了苦B的Python學習之旅。

好了,話不多說了,今天我們就聊聊如何讓itchat支持代理的事吧。

事情是這樣滴:

老頭所在公司要每天把一些內網(wǎng)的報表數(shù)據(jù)扒拉下來,把業(yè)績分個一二三等,在微信群里通報通報(自動扒拉報表的過程以后再表)。

因為每天各經(jīng)營單位都是晚上6點半以后才差不多結束營業(yè),因此老頭只能在7點鐘左右進行統(tǒng)計,唉,也只有我們這些有房有貸有家小的中年男人才能這樣工作。等到導完數(shù)據(jù),導入excel模板,統(tǒng)計完畢再發(fā)微信群,也差不多7點半了,在魔都,這個點下班回家,差不多得8點半才到家吃飯。

這樣干了幾個星期,實在有點吃不消了,雖然python是剛學的,才學了print(),也只有硬上了。

總之,經(jīng)過了更苦B的幾個星期的program自覺加班過程,老頭終于成功的把報表處理及報告內容生成編成了程序,原來半個小時工作變成了2分鐘,只要把報告內容copy到PC版微信里發(fā)出去就行了。

老頭這樣舒服了幾天,沒想到,各位看通報的80、90后吃瓜群眾又提出了更高的要求,要求更美觀,于是老頭要先把報告通過PC版微信發(fā)給自己,然后再在微信上加上各種粉紅色的emoji再發(fā)。老頭人老眼花,發(fā)emoji實在累。就想著有木有辦法直接讓程序把報告內容給發(fā)了,于是爬遍各大網(wǎng)站,大家一致推薦itchat好用量又足。

老頭滿懷希望pip install itchat后,發(fā)現(xiàn)事情大條了:itchat居然不支持代理。

話說老頭所在的公司,雖然業(yè)績不如大公司,可對IT管理之嚴格可比肩業(yè)內老大,比如上網(wǎng)必須通過代理等等。

這可怎么辦,老頭在吃瓜群眾中還是有點IT威望的,可不能因為這點事而弱了自己的名頭。

反正公司內網(wǎng)環(huán)境訪問外網(wǎng)都是必須要用代理的,那就把itchat的原碼簡單改改,研究了一下itchat的原碼,原來它都是通過requests.session.get或requests.session.post的方法和weixin服務器連接的,這就好辦了嘛,只要把session初始化時加入proxy支持就OK了。

說干就干。

第一步,先找到itchat安裝的目錄,找到config.py

一般內容是這樣的:

```

import os, platform

VERSION = '1.3.10'

BASE_URL = 'https://login.weixin.qq.com'

OS = platform.system() # Windows, Linux, Darwin

DIR = os.getcwd()

DEFAULT_QR = 'QR.png'

TIMEOUT = (10, 60)

USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'

```

可以在里面加上一行:PROXIES = {'http':'http://公司代理IP地址:公司代理http端口號','https':'https://公司代理IP地址:公司代理https端口號'}

有人說proxy我只用http的行不,老頭在這里遇到過坑,明白告訴你,不行,weixin都要用到https協(xié)議的。

第二步,找到core.py

找到?

```

self.s = requests.Session()

```

在下面插入一行。

```

self.s.proxies.update(config.PROXIES)

```

第三步,找到utils.py

找到

```

def test_connect(retryTime=5):

```

把本段函數(shù)里的

```

r = requests.get(config.BASE_URL)

```

改成:

```

r = requests.get(config.BASE_URL,proxies = config.PROXIES)

```

第四步,找到components目錄下的login.py

找到?

```

def get_msg(self)

```

把本段函數(shù)里的

```

r = self.s.post(url, data=json.dumps(data), headers=headers, timeout=config.TIMEOUT)

```

改成

```

r = self.s.post(url, data=json.dumps(data), headers=headers, timeout=config.TIMEOUT,proxies = config.PROXIES)

```

然后運行主程序,一切正常,搞定收工。

第一次寫簡書,寫得不好,請大家不吝打賞。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容