1. 程式人生 > 實用技巧 >10行Python程式碼實現抽獎助手自動參與抽獎

10行Python程式碼實現抽獎助手自動參與抽獎

不知道大家用過抽獎助手小程式沒?(免費給抽獎助手做個小廣告),我在公眾號多次用它來發過很多獎品,同時,我每天也會去參與一些抽獎,目前的中獎記錄為0(尷尬臉)

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!??¤
QQ群:623406465

在助手中參與抽獎你不需要支付一分錢,但是需要花時間,想抽獎就不得不每天開啟小程式逐個點選參與才能參與,每天重複的操作覺得好繁瑣,於是我萌生出一個想法,用程式去自動參與抽獎。

說幹就幹,熟悉爬蟲基本原理的大概能猜出來怎麼做。我們之前寫過基於Python爬微信公眾號爬蟲的系列教程,現在假設你已經會用 Fiddler 去代理 HTTP 請求。怎麼安裝 Fiddler 和配置手機端這裡不再介紹,自行百度。

配置好 Fiddler 之後,手機開啟小程式 “抽獎助手” 之後,有個公共抽獎列表

通過Fiddler 抓包,我們看到抽獎列表的請求地址是:/public_lottery?page=1&size=5, 請求方法是 GET,還有一個 Header 欄位 Authorization,返回的資料結構可以清晰看到總共返回了5條資料,代表5個獎品,每個欄位基本能猜出來什麼意思。

我們再來手動選擇一個活動點選參與抽獎,看背後它是怎麼向伺服器傳送請求的,弄清楚了原理之後就可以用程式來自動模擬請求。


參與抽獎的請求有幾個注意的地方,請求使用的是 POST 方法,URL地址是:/lottery/67c3a5afe794dc7bdbed85a38a18bb44/join,和抽獎列表一樣,還有一個請求 Header 是 Authorization,它的值就是後面一串很長的 Bearer 開頭的字串… 。

現在我們就可以用 Python 來構建一個自動參與抽獎的指令碼,每隔一段時間就去自動刷,發現有新的獎品,就自動參與抽獎。

原始碼

# coding=utf-8

import requests

def main():
  url = "https://lucky.nocode.com/public_lottery?page=1&size=5"
  # 替換成你自己的Authorization
  headers = {
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...."}
  res = requests.get(url, headers=headers)
  lotteries = res.json().get("data")
  join_url = "https://lucky.nocode.com/lottery/{id}/join"
  for lottery in lotteries:
    res = requests.post(join_url.format(id=lottery.get("id")), headers=headers)
    data = res.json()
    if res.status_code == 200 and 'errors' not in data:
      print("成功參與抽獎:《%s》" % lottery.get("prizes").get("data")[0].get("name"))

if __name__ == '__main__':
  main()

執行

成功參與抽獎:《阿瑪尼紅管脣釉》

成功參與抽獎:《Havaianas 人字拖》

成功參與抽獎:《《不要成為無聊的大人》》

成功參與抽獎:《Satan 鑰匙扣》

成功參與抽獎:《桌面理線器》


現在所有獎品都變成已參與狀態,坐等中獎吧。你還可以對程式碼進行改進。

有人可能會問,這算不算作弊呢?我覺得這就是程式設計師的優勢,我們只是用了不一樣的工具來完成相同的事情,以後程式設計還真的是每個人都應該掌握的一項基本技能,沒事寫個程式碼解決繁瑣的、重複的工作。懶惰是推動社會文明進步的原動力。