麥當勞報報抽籤機器人

講者: 土豆

日期: 2020/05/17

大綱

  • 聲明
  • 起因
  • 麥當勞報報APP解析
  • 撰寫抽籤腳本
  • 參考資料

聲明

  1. 此報告所分享之內容僅作為學術研究教育目的之用
  2. 請勿以本報告當中所分享之技術進行違法行為

起因

每次報報響起時都會被嘴一波

哪有人把報報設在半夜12點的拉!?

嚇我一跳!

這個時間!? 有沒搞錯阿??

問號

每次都要解鎖手機然後按按鈕
實在糾嘛還

而且它真的五告岔

時間回到某次資安演講

講者很自豪地說,他寫了一個麥當勞報報自動抽籤機器人

Dcard風波

某位學生寫了一個網站,只要在他的網站輸入帳號密碼就會自動幫你抽籤

引發了麥當勞官方注意,被要求下架

有些東西,還是自己玩玩就好了...

別人寫得出來,沒道理我寫不出來!

但怎麼寫

沒想到意外地容易

麥當勞報報APP解析

這是你的報報APP

聰明如你

應該想過一個問題

?

這個資料是誰給它的?

這是你的報報APP

其實就是

網站後端

Request

Response

JSON

API

等等,所以到底啥是API

System API: OS <-> Program

Python的sys套件: OS <-> Python

Facebook的API: Facebook <-> Program

政府開放資料API: 政府網站 <-> Program

應用程式之間可程式化溝通介面

Application Programming Interface

Web API

This 15 wheel: Airtable <-> Wheel

URL

System API

Library

這是你的報報APP

網站後端

Request: 我要抽籤!

Response

JSON

API

URL??

封包攔截工具

封包長怎樣

URL!!

撰寫抽籤腳本

先利用Postman測試

先利用Postman測試(已領)

Python抽籤腳本

import requests
import json
from datetime import datetime
from linebot import LineBotApi
from linebot.models import TextSendMessage, ImageSendMessage

line_bot_api = LineBotApi('Your Channel access token')


data = {
  "access_token": "Your App access token",
  "source_info": {
    "app_version": "2.2.4",
    "device_time": datetime.now().strftime("%Y/%m/%d %H:%M:%S"),
    "device_uuid": "Your device uuid",
    "model_id": "G8232",
    "os_version": "8.0.0",
    "platform": "Android"
  }
}

r = requests.post('https://api1.mcddailyapp.com/lottery/get_item', data=json.dumps(data))

res = r.json()
replymsg = res['rm']
if 'sticker' in res['results']:
  replyimg = res['results']['sticker']['object_info']['image']['url']
elif 'coupon' in res['results']:
  replyimg = res['results']['coupon']['object_info']['image']['url']
else:
  replyimg = 'unkown'

line_bot_api.push_message('Your Line ID', TextSendMessage(text=replymsg))
line_bot_api.push_message('Your Line ID', ImageSendMessage(original_content_url=replyimg, preview_image_url=replyimg))

Heroku Scheduler

Heroku Add-on: Heroku Scheduler

定期執行特定指令

免費服務,但是要先綁定信用卡

成果

參考資料

這東西你找不到參考資料的拉

好啦,勉強放一些

感謝聆聽

千萬別拿去做壞事喔!

麥當勞報報​自動代抽機器人

By Sam Yang

麥當勞報報​自動代抽機器人

  • 4,552