成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微信群總有人發廣告?用Python寫一個自動化機器人消滅他

開發 后端 機器人 自動化
雖然不清楚是什么能夠驅使他們這樣不折不扣的努力成為最強微信群牛皮癬(可能是鈔能力),但在經歷太多次的騷擾之后,我開始思考是否可以用Python消滅他們。

[[341536]]

微信群牛皮癬,指的是在微信群里毫無下限的群發小廣告的用戶,是微信群主最痛恨的一波人。如果熟悉早起的讀者可以知道我有一個技術交流群,但是自從建群以來就飽受小廣告的困擾。他們偽裝成正常人混進群然后不停的發送廣告轟炸,嚴重的打亂了群內的技術交流氣氛。

或者是一聲不吭的去騷擾每一個群成員。

雖然不清楚是什么能夠驅使他們這樣不折不扣的努力成為最強微信群牛皮癬(可能是鈔能力),但在經歷太多次的騷擾之后,我開始思考是否可以用Python消滅他們。

第一回合

其實一開始的思路很簡單,總共分兩步,首先成功識別出這些人再用Python將他們踢出去即可。

但是這兩步,每一步都不簡單,先來說說第一步如何準確的識別這些用戶,網上沒有數據也沒有一個好的鑒別標準,只能用我的大腦完成特征識別。經過這幾個月,近百份發廣告用戶的樣本訓練,我這個“人工智能”基本可以判斷一個非正常用戶至少滿足下面幾條中的三條以上:

  •  沒有設置微信號
  •  頭像為網紅女生
  •  微信名為特殊符號或者表情
  •  沒發過朋友圈
  •  沒有朋友圈背景圖
  •  通過后不會有除進群申請外的其他回復

并且根據歷史數據,符合1、3條的用戶有極大概率為小廣告愛好者,那么接下來要做的就是用Python寫代碼找出微信里面的這些人。在總結出這一規律后很樂觀的認為實現這一需求并不困難,因為我在幾年前就曾拿過Python研究微信好友,不論是wxpy還是itchat操作起來應該都不復雜,但是事實確證明我還是太年輕了

不知從何時起,雖然這些庫還能安裝使用但是微信基本已經禁止了大部分人的網頁版微信登陸權限,因此當我使用多個微信號分別掃完登陸微信的二維碼之后,無一例外的提示我 

  1. <error><ret>1203</ret><message>  
  2. 為了你的帳號安全,此微信號已不允許登錄網頁微信。  
  3. 你可以使用Windows微信或Mac微信在電腦端登錄。  
  4. </message></error> 

這就讓人頭疼了,總不能手動的去一個一個check我的幾千個微信好友吧,于是我開始思考是否有其他的解決辦法。

第二回合

如果你經常寫Python爬蟲,那么你會知道在有些情況下,與其使用Requests對付一些惡心的反爬措施,不如Selenium操作起來方便。所以在發現想使用基于微信API的思路失效后,我將目光轉向了相對笨一點的方法————pynput

pynput是一款使用Python來控制和監控電腦鼠標、鍵盤的第三方庫,說到這里你大概明白我想怎么做了,直接用API取數據搞不定,那么我就像Selenium一樣,模擬點擊一個一個好友來實現我想要的操作。

下面簡單說一下這個庫,因為沒有太多依賴庫所以安裝起來很簡單,直接pip install pynput即可,使用起來也很簡單,對于鼠標操作只依賴坐標,看個demo👇

就像上面GIF演示的一樣,先導入pynput并實例一個鼠標控制器,接著將微信在狀態欄的位置提交給mouse.position,這樣鼠標就會移動到該位置,再使用mouse.press來模擬鼠標點擊即可自動打開微信。那么問題來了,如何獲得我想要的位置的坐標?總不能一點一點試吧!

pynput除了使可以使用Controller來控制鼠標,也可以監控鼠標,比如使用下面的代碼就可以記錄下程序啟動后鼠標的每一個點擊操作所在的位置👇 

  1. from pynput import mouse  
  2. def on_move(x, y ):  
  3.  print('鼠標移動至 {0}'.format(  
  4.   (x,y))) 
  5. def on_click(x, y , button, pressed):  
  6.  print('{0} 在坐標 {1}'.format('鼠標點擊' if pressed else '鼠標釋放', (x, y)))  
  7.  if not pressed:  
  8.   return False 
  9. while True:  
  10.  with mouse.Listener(on_moveon_move = on_move,on_clickon_click = on_click) as listener:  
  11.   listener.join() 

那么接下來的任務就簡單了,我們只需要保持微信窗口不移動,在記錄下每一個關鍵位置的坐標(微信圖標位置,群聊窗口位置,單個群成員頭像位置)之后,比如我們想對上面說的第一條規則進行判斷即獲取每一個群成員微信號是否設置,就可以按照模擬以下操作實現:

  •  點擊微信app
  •  點擊需要的群聊
  •  依次點擊每一個群成員頭像
  •  移動到微信號的位置
  •  雙擊該微信號
  •  復制該微信號判斷是否為初始微信號

在上面的過程中,值得說的是最后一步,復制我們可以使用pynput中的鍵盤控制器,在雙擊選中對應微信號之后通過下面的代碼實現模擬鍵盤輸入Command + C完成復制操作 

  1. from pynput.keyboard import Key  
  2. from pynput.keyboard import Controller as Controller1  
  3. keyboard = Controller1()  
  4. with keyboard.pressed(Key.cmd):  
  5.     keyboard.press('c')  
  6.     keyboard.release('c') 

但是粘貼則不需要使用pynput通過模擬command+c來粘貼到另一個編輯中復雜過程,我們可以使用第三方庫pyperclip,直接通過下面兩行代碼即可將復制好的文字轉為字符串 

  1. import pyperclip  
  2. pyperclip.paste() 

在將群成員的微信號轉換為字符串后,不論我們是通過判斷字符串的長度還是用正則表達式或者是其他的方法都可以輕松的判斷該成員的微信號是否為初始微信號,實現規則1的判斷,下面的代碼與動態圖就是獲取第一個群成員微信號的完整過程 

  1. from pynput.mouse import Button, Controller  
  2. import time  
  3. from pynput.keyboard import Key  
  4. from pynput.keyboard import Controller as Controller1  
  5. import pyperclip  
  6. mouse = Controller()  
  7. # 點擊微信  
  8. mouse.position = (1046.14453125, 4.546875)  
  9. time.sleep(2)  
  10. mouse.press(Button.left)  
  11. mouse.release(Button.left)  
  12. #點擊頭像  
  13. mouse.position = (1194.140625, 441.05859375)  
  14. time.sleep(1)  
  15. mouse.press(Button.left)  
  16. mouse.release(Button.left)  
  17. # 點擊選中文本 
  18. mouse.position = (965.60546875, 284.0390625)  
  19. time.sleep(1)  
  20. mouse.click(Button.left, 2)  
  21. keyboard = Controller1()  
  22. with keyboard.pressed(Key.cmd):  
  23.     keyboard.press('c')  
  24.     keyboard.release('c')  
  25.     time.sleep(1) 
  26. wechatid = pyperclip.paste()  
  27. print(f"微信號{wechatid}疑似廣告號" if len(wechatid) > 20 else f"微信號{wechatid}不是廣告號") 

可以看到成功將早小起的微信從廣告號中排除

那么接下來只需要記錄下每兩個群成員之間間隔的坐標距離,之后循環去模擬滾動或者下拉來實現上述過程,就可以將群里所有成員的微信號根據規則1進行判斷,找到異常的那些成員單獨進行判斷。

可以看到最終是找到了6個疑似廣告號的微信,接下來通過其他規則的手動判斷最終將兩個用戶判定為廣告高風險用戶并移除。

寫在最后

通過上面的操作,雖然成功的踢出了兩個疑似廣告號,但總體來說還是敗了。因為依舊很難去判斷是否真的踢對了人,如果踢錯了,那么則粉絲-1,同時也可以發現想用Python準確找到群里的牛皮癬還是非常困難的,使用pynput最多可以完成微信名、微信號及頭像(使用識圖API)的判斷,但是朋友圈隱藏的更多信息卻很難提取挖掘。

同時pynput有著和selenium同樣的缺點,那就是由于模擬真人操作而導致的速度慢,并且它的定位方式僅支持坐標,所以還需要保證在操作的過程中微信窗口不可以被移動,否則之前記錄的元素將全部失效,此處建議開發者可以升級更多的定位方式。 

 

責任編輯:龐桂玉 來源: AI科技大本營
相關推薦

2021-04-01 10:51:44

機器人人工智能編程

2022-09-30 13:55:46

Python機器人

2021-04-21 13:56:32

人工智能機器學習

2020-04-14 15:33:37

Python 釘釘機器人

2019-04-02 09:00:00

機器人人工智能HMI設計

2023-07-11 16:35:13

機器人流程自動化

2023-02-09 07:34:52

ChatGPT機器人人工智障

2024-03-04 15:04:37

機器人人工智能

2020-04-11 22:21:07

開源機器人過程自動化工具RPA

2018-06-08 16:18:43

Python微信聊天機器人

2023-10-30 17:41:29

機器人自動化

2018-12-04 15:10:56

Python微信備忘錄

2018-03-21 10:25:40

銀行機器人人工智能

2020-04-29 11:28:54

智能自動化機器人流程自動化AI

2017-11-27 15:17:24

PythonMonkey腳本

2020-12-02 13:00:17

Recast.AI聊天機器人人工智能

2013-04-10 16:04:12

微信微信機器人技巧

2021-08-06 09:35:37

Python盯盤機器人編程語言

2021-08-11 11:18:25

機器人人工智能技術

2019-04-19 14:40:15

代碼Python機器人
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片在线观看 | 欧美视频精品 | 亚洲精品一区二区在线观看 | 日韩中文字幕视频在线观看 | 成人在线视频网 | 国产成人高清在线观看 | 欧美日韩国产在线 | a级毛片免费高清视频 | 亚洲午夜视频 | 欧美xxxx色视频在线观看免费 | 99久久99| 亚洲欧美综合精品另类天天更新 | 久青草影院 | 一级全黄少妇性色生活免费看 | 亚洲成人av| 欧美黄色大片在线观看 | 九九久久免费视频 | 天天爽夜夜操 | 中文字幕不卡在线观看 | 成人免费在线视频 | 国产精品视频在线播放 | 成人一区二区三区视频 | 久久久久国产一级毛片高清网站 | av在线播放一区二区 | 亚洲国产欧美在线人成 | 国产精品日韩一区二区 | 综合久久久 | 亚洲一区二区三区在线视频 | 毛片区 | 欧美日韩国产精品一区 | 久久精品综合 | 特黄一级 | 国产高清精品一区二区三区 | 欧美成人猛片aaaaaaa | 久在线精品视频 | 黄网站在线播放 | 久久久精品天堂 | 亚洲三级视频 | 午夜免费视频 | 国产欧美精品一区二区 | 久久精品国产99国产精品 |