首頁 > 軟體

利用Python製作簡易的點贊器

2022-06-27 14:02:13

在今天,任何一個社群類平臺,都具備點贊功能,應運而生的就是自動點贊器,俗稱刷分機/刷贊器。

本文將為你介紹一款點贊機器人,最簡單易理解的核心邏輯。

全文涉及的虛擬碼,使用 Python 編寫,由於是虛擬碼的原因,不懂 Python,你也能看懂。

本篇部落格試用場景

本次點贊機器人,主要面向電腦上的 Web 站點,不涉及 APP 端。

點贊機器人核心邏輯

模擬點選操作,觸發點贊,喜歡等操作。

實現點贊操作前,還有一步重要的程式碼實現,模擬登入。

因此,點贊機器人的基本需求如下:

  • 模擬登入;
  • 進行點贊;

對該需求進行擴充套件後,存在兩個常見的業務場景。

  • 通過模擬登入大量賬號,實現針對 “一人/一物/一文/一視訊” 的大量點贊,即刷別人的分;
  • 通過登入一賬號,實現針對“多人”的批次點贊,即刷自己的分。

程式碼層級的實現

基本邏輯梳理清楚之後,就可以進入實際的編碼環節。

模擬登入

在登入實現上,存在兩種思路:

  • 大量註冊(也可購買)賬號,通過 Python 程式切換賬號,每次登入點贊之後,切換下一賬號;
  • 提前通過技術或人工手段,模擬登入,記錄賬號登入後產生的 Cookie,後續維護 Cookie 池實現操作邏輯。

思路二存在的問題為 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)
# 思路一
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 代理池,也可自建代理池,重點看專案成本與對穩定性的要求。

點贊器

在很多專案中,當你完成了模擬登入操作,已經表示該網站對你 完全開放了。

接下來你要做的就是尋找點贊介面,例如下面的案例(只做參考使用):

CSDN 點贊介面如下:

# POST 傳遞使用者標識與文章 ID
Request URL: https://blog.csdn.net//phoenix/web/v1/article/like
Request Method: POST
# POST 引數如下
articleId=118558076

知乎點贊介面如下:

# 直接 POST 傳遞,使用者標識在 Cookie 中
Request URL: https://www.zhihu.com/api/v4/zvideos/1391420717800554497/likers
Request Method: POST

bilibili 點贊介面如下:

# 傳遞使用者標識的同時,傳遞相應的引數
Request URL: https://api.bilibili.com/x/web-interface/archive/like
Request Method: POST
# POST 引數如下
aid: 631588341
like: 1
csrf: b39b26b6b8071e2f908de715c266cb59

通過上述幾個案例,你會發現,點贊操作介面格式基本類似,都是通過 POST 傳遞 Cookie 與特定引數到伺服器中。

其中 B 站的特殊一些,攜帶了一個 csrf 引數,該引數可以從 Cookie 中直接提取。

虛擬碼實現

import requests

def like(params):
 # 請求頭中獲取 Cookie 由模擬登入獲取
 cookie = get_cookie()
 # cookie = login()
 headers = {
  "其它屬性":"屬性值",
  "Cookie":cookie # 重點包含使用者標識 Cookie
 }
 res = requests.post("地址","引數","請求頭")

在呼叫點贊介面部分,你將碰到一個學習難點

介面中包含位置引數,例如上述的 B 站點贊連結中的 csrf,碰到未知引數的解決思路參考下述描述。

繼續拿 B 站舉例,開啟瀏覽器開發者工具,切換到 network 索引標籤,當點選點讚的時候,會出現點讚的資料請求,如下圖所示。

該請求同時出現了 POST 的相關引數,接下來,你只需要按下鍵盤的 Ctrl+F,開啟搜尋視窗(就是在當前開發者工具的 network 索引標籤中開啟),在搜尋方塊中,輸入要檢索的值,即可找到該值所出現的所有請求位置,然後再進行後續分析即可。重點要找到該引數值產生的位置與原理。

總結

自動點贊機器人存在多樣的應用場景,準確的說,該操作會造成某些平臺的失衡,也會影響平臺資料的公平性,但正是因為有需求,所以市場上現在存在大量的點贊器,刷分器,評論器,甚至存在大量的公司去經營此類業務。

我們不支援該類業務,但可以學習它的實現原理。畢竟使用 Python 實現一款自動化工具,瞭解原理之後,將變得非常簡單。

以上就是利用Python製作簡易的點贊器的詳細內容,更多關於Python點贊器的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com