前言 許多社區類平臺都具備點贊功能,應運而生的就是自動點贊器,今天用Python寫一款點贊機器人,最簡單易理解的核心邏輯。全 文涉及的偽代碼,使用 Python 編寫,由於是偽代碼的原因,不懂Python,你也能看懂。 一、簡介 1.適用場景 本次點贊機器人,主要面向電腦上的 Web 站點,不涉及 ...
前言
許多社區類平臺都具備點贊功能,應運而生的就是自動點贊器,今天用Python寫一款點贊機器人,最簡單易理解的核心邏輯。全
文涉及的偽代碼,使用 Python 編寫,由於是偽代碼的原因,不懂Python,你也能看懂。
一、簡介
1.適用場景
本次點贊機器人,主要面向電腦上的 Web 站點,不涉及 APP 端。
2.核心邏輯
模擬點擊操作,觸發點贊,喜歡等操作。實現點贊操作前,還有一步重要的代碼實現,模擬登錄。因此,點贊機器人的基本需求
包括模擬登錄、進行點贊;
對該需求進行擴展後,存在兩個常見的業務場景。
•通過模擬登錄大量賬號,實現針對 “一人/一物/一文/一視頻” 的大量點贊,即刷別人的分;
•通過登錄一賬號,實現針對“多人”的批量點贊,即刷自己的分。
二、代碼實現
邏輯梳理清楚之後,就可以進入實際的編碼環節。
1.模擬登錄
在登錄實現上,存在兩種思路:
•大量註冊(也可購買)賬號,通過 Python 程式切換賬號,每次登錄點贊之後,切換下一賬號;
•提前通過技術或人工手段,模擬登錄,記錄賬號登錄後產生的 Cookie,後續維護 Cookie 池實現操作邏輯。
思路二存在的問題為 Cookie 有效期問題,如網站無此限制,建議採用該方式,效率更高。偽代碼實現如下:
Python學習交流Q群:906715085### # 思路一 with open("users.txt","r") as f: user_pass = f.readline() # 模擬登錄 login(user_pass) # 完成登錄後操作 do_someting() # 思路二 with open("cookies.txt","r") as f: one_cookie = f.readline() # 通過攜帶 cookie 參數訪問介面 get_detail(one_cookie) with open("users.txt","r") as f: user_pass = f.readline() # 模擬登錄 login(user_pass) # 完成登錄後操作 do_someting() # 思路二 with open("cookies.txt","r") as f: one_cookie = f.readline() # 通過攜帶 cookie 參數訪問介面 get_detail(one_cookie) with open("users.txt","r") as f: user_pass = f.readline() # 模擬登錄 login(user_pass) # 完成登錄後操作 do_someting() # 思路二 with open("cookies.txt","r") as f: one_cookie = f.readline() # 通過攜帶 cookie 參數訪問介面 get_detail(one_cookie) # 思路一 with open("users.txt","r") as f: user_pass = f.readline() # 模擬登錄 login(user_pass) # 完成登錄後操作 do_someting() # 思路二 with open("cookies.txt","r") as f: one_cookie = f.readline() # 通過攜帶 cookie 參數訪問介面 get_detail(one_cookie)
其中思路二的 Cookie 池,可以人工或者使用程式創建。在模擬登錄部分,碰到的兩個學習難點以及解決方法:
1.驗證碼識別問題:對接打碼平臺;
2.IP 反爬限制:購買 IP 代理池,也可自建代理池,重點看項目成本與對穩定性的要求。
2.點贊介面分析
在很多項目中,當完成了模擬登錄操作,已經表示該網站完全開放了。接下來你要做的就是尋找點贊介面,例如下麵的案例(只做參考使用)。
①CSDN 點贊介面如下:
介面請求信息如下:
# POST 傳遞用戶標識與文章 ID Request URL: https://blog.csdn.net//phoenix/web/v1/article/like Request Method: POST # POST 參數如下 articleId=122076691
②知乎點贊介面如下:
介面請求信息如下:
# 直接 POST 傳遞,用戶標識在 Cookie 中 Request URL: https://www.zhihu.com/api/v4/articles/458921602/like Request Method: POST
③bilibili 點贊介面如下:
介面請求信息如下:
# 傳遞用戶標識的同時,傳遞相應的參數 Request URL: https://api.bilibili.com/x/article/like Request Method: POST # POST 參數如下 aid: 14849888 like: 1 csrf: 4fc454178a13f7e4494e3b5f48385b3a
通過上述幾個案例發現,點贊操作介面格式基本類似,都是通過 POST 傳遞 Cookie 與特定參數到伺服器中。其中 B 站的特殊一
些,攜帶了一個 csrf 參數,該參數可以從 Cookie 中直接提取。
3.點贊器偽代碼實現
偽代碼實現如下:
在調用點贊介面部分,你將碰到一個難點:介面中包含位置參數,例如上述的 B 站點贊鏈接中的 csrf,碰到未知參數的解決思路
參考下述描述。繼續以B 站舉例,打開瀏覽器開發者工具,切換到 network 選項卡,當點擊點贊的時候,會出現點贊的數據請
求,如下圖所示。
該請求同時出現了 POST 的相關參數,接下來,按住鍵盤的 Ctrl+F,打開搜索視窗(開發者工具的 network 選項卡中打開),在
搜索框中,輸入要檢索的值,即可找到該值所出現的所有請求位置,然後再進行後續分析即可。重點要找到該參數值產生的位置
與原理。
三、總結
自動點贊機器人存在多樣的應用場景,準確的說,該操作會造成某些平臺的失衡,也會影響平臺數據的公平性。我們不支持該類
業務,但可以學習它的實現原理。