獨家:全棧工程師的微信搶紅包攻略

2021-02-24 優才網

自昨天起,在一堆群裡,各路朋友土豪開始熱身發紅包,由於家裡網速是 50M 帶寬,外加 iPad,所以只要第一時間看見的,動手快,還是基本上能搞定。但這基本上是體力活,偶爾圖個樂還可以,如果長時間投在上面,又累又浪費時間,另外還有可能錯過,人肉的活,實在是不符合一個全棧工程師應該長時間幹的事情,全棧工程師要學會利用工具來幹這種枯燥無味的事。

第一時間想到的是自動化測試的工具,模擬手工去點擊,但是這種方式,一是開發難度較大,在這一天半天之內,並不一定能搞定,再長就不值得,浪費太多時間,並且其實是屬於外掛行為。

於是乎想到,我們需要的,其實是一個監控而已。只要有紅包了,能及時通知到,人去取就可以了。這樣既不需要費力地盯,同時還能一心二用,沒有紅包的時候,該幹嘛就可以了。這個監控也可以不是裝在手機或者iPad上的,也不形成外掛行為。

想好了,立馬乾,第一時間,當然是抓包。看看紅包來時,有沒有什麼特殊的包可以監聽的。

於是乎,在電腦上 啟動 Charles,這樣就起來了一個代理服務,默認的監聽埠是 8888.

再通過 /sbin/ifconfig 查到本機 IP, 192.168.199.246

這樣就得到了,代理伺服器的 IP 和埠。

然後將手機的上網連接加上代理 ,指向這個代理伺服器。如果不知道如何設置Android 代理 ,請自行百度搜索:「Android 設置代理」腦補。

通過監聽手機流量發現,在紅包到來時,Android 手機並沒有數據來回,

果真,在數個繁雜的請求中,發現了幾個現象 :

一是 Android 並沒有明顯文本數據包通過,感覺可能是Android 手機和伺服器是Socket 建立的直接連接。

二是 iOS 系統雖然有數據包經包,每收到消息都有,但是是二進位的,拆解起來,在短時間比較困難。

難道是沒有解了嗎?

功夫不負苦心人,每來一個紅包,客戶端向伺服器端取了一個圖片文件。應該是紅包的封面圖標。

OK,這就可以監聽了。

如下圖:


這個怎麼監聽呢?

一種辦法是像在 Windows 中,可以取得程序的 Handle ,然後讀取程序右邊這個列表的數據,不過這也不是很快能搞出來的。稍微查了一下,發現蘋果上,還不是特別好加這個功能(未嚴格確認)。

想到最好的辦法是不用 Charles 做代理,找個開源的代理。找開源的代理,勿庸置疑,必須是 Nginx 了。

Nginx 簡單,找了一份 nginx-1.6.2 的源碼,下下來。 直接 configure & make。就編譯出來了。

編寫了如下配置,存在代碼的 objs 目錄下:

練練手

1

2

3

4

5

6

7

8

9

10

11

12

13

worker_processes 1;

events {

worker_connections 1024;

}

http{

server {

listen 9999;

location / {

proxy_pass http://$http_host$request_uri;

}

}

}

進入代碼的 objs 目錄,使用 ./nginx -c nginx.conf 起來。

把手機代理指向 192.168.199.246:9999

果真,在紅包到來時,在Nginx 日誌裡發現了日誌。

練練手

1

2

3

4

5

bash-3.2# cat /usr/local/nginx/logs/access.log |grep hongbao|tail -10

192.168.199.211 - - [18/Feb/2015:08:35:00 +0800] "GET http://hongbao.weixin.qq.com/pay/DefaultCover.png HTTP/1.1" 502 172 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.2; HUAWEI C8813Q Build/HuaweiC8813Q)"

192.168.199.211 - - [18/Feb/2015:08:37:44 +0800] "GET http://hongbao.weixin.qq.com/pay/DefaultCover.png HTTP/1.1" 502 172 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.2; HUAWEI C8813Q Build/HuaweiC8813Q)"

192.168.199.211 - - [18/Feb/2015:08:39:07 +0800] "GET http://wx.gtimg.com/hongbao/img/hongbao.png HTTP/1.1" 502 172 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.2; HUAWEI C8813Q Build/HuaweiC8813Q)"

192.168.199.211 - - [18/Feb/2015:08:44:54 +0800] "GET http://wx.gtimg.com/hongbao/img/hongbao.png HTTP/1.1" 502 172 "-" "Dalvik/1.6.0 (Linux; U; Android 4.1.2; HUAWEI C8813Q Build/HuaweiC8813Q)"

這就好辦了,監控這個日誌就可以了嘛。第一個想到的是監聽日誌。寫了如下代碼:

練練手

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

$lastline = "";

while(1)

{

$line = `tail -1 /usr/local/nginx/logs/access.log`;

if(($lastline != $line) && strpos($line, "hongbao")!==false)

{

$cmd = "say -v Bells \"dong\"";

system($cmd);

$cmd = "osascript -e 'tell app \"System Events\" to display dialog \"有紅包了!\"'";

echo $cmd."\n";

}

echo date("Y-m-d H:i:s")."\n";

usleep(500000);

$lastline = $line;

}

這段代碼,實現了對日誌的監聽,並且在有紅包的時候,能夠發聲報警。開始還設計了一個彈出對話框的功能,但是發現影響幹別的事情,所以先注釋了。並且加了判斷,只報一次警。本來開始設計成報多次,發現紅包來得集中時,就無法判斷了。一次就夠了。開始本來也是停留1秒,發現1秒也有點長,變成了停留0.5秒。

到這就算完了嗎?還沒有完,這個是去檢測日誌了。日誌從接收請求,寫入日誌, 再由監控程序讀到,是不是還有更快的呢?

答案是肯定的,直接在 Nginx 相關的模塊,比如 ngx_http_log_module 模塊中,有 ngx_http_request_t 的地方加入如下代碼,重新編譯 nginx

練練手

1

2

3

4

if(strstr(r->uri.data, "hongbao")!=NULL)

{

system("/usr/bin/say -v Bells \"dong\"");

}

這樣經過測試,發現不行。 後來想,是不是 變成daemon 的原因?

果真,在nginx.conf 中加入一行:

練練手

當紅包來時,nginx 就能報警了,這個時候,日誌監控也可以去掉了。

現在紅包就等通知就好了。空出來的時候,可以和小朋友玩,看書、寫代碼、聽音樂啦!

大家可以看看我的戰果,僅以此文獻給 全棧工程師朋友們。


現在基本上能用了,如果是5秒以內搶光的,比較困難,10秒以內的。反應過來還是來得及的呵。

全棧工程師,就是這麼任性,要想知道,如何成為全棧工程師,歡迎點擊閱讀原文。

相關焦點

  • 搶紅包全攻略!微信、QQ、微博……這些時間點要記牢!
    今天史上規模最大的紅包大戰一觸即發!微信、QQ、微博輪番上陣,搶紅包提前設定好時間才是王道!你準備好了嗎?
  • 牛小弟教你如何搶微信紅包!!!
    搶紅包作為一項新民俗相信未來幾天,大家生活是這樣的一定能練就葵花點穴手的速度!>微信乞丐」...作為貼心的牛小弟必須給大家傳授下如何優雅的發紅包攻略!一定要嚴格參照搶紅包的人數來選擇。如果參與搶紅包的人數(除開自己)小於等於5,就發(人數-1)個紅包,讓有一個搶不到才能保證搶紅包的樂趣。如果參與人數多於5個且少於20,則可以發5個紅包。如果參與人數多於20個,我們也可以發10個的紅包。
  • 【微信紅包】恭喜發財,大吉大利!2017份紅包,快搶!
    1秒鐘,世界人口增加2.4人    1秒鐘,可以呼吸93毫升空氣           1秒鐘,地球繞太陽轉動298公裡       1秒鐘,我們可以綻開一個微笑↓↓↓搶  元旦搶紅包 1月1日  9:00開搶元旦5萬元紅包共2017
  • 小米紅包助手出爐 秒殺紅包不是夢
    尤其是在微信、支付寶、米聊等產品推出紅包功能後,搶紅包成為網友春節不可或缺的一項活動。以微信紅包為例,幾乎每個用戶都會加入多個微信群,往往盯著這個群,另外的群就冒出紅包,等打開要搶的時候卻為時已晚。況且誰也不可能一天24小時盯著手機,這導致諸多紅包是在不知道的情況下擦身而過。還在為戳破屏幕也搶不到紅包而後悔嗎?
  • 攻略 搶紅包大戰除夕時間表
    春節未到,紅包先來。最近,各大平臺都開展了「紅包大戰」。下面為大家奉上今天搶紅包時間表。
  • 微信紅包接龍玩法
    微信紅包怎麼玩,微信搶紅包怎麼玩,微信紅包怎麼提現,微信紅包接龍玩法涉嫌聚眾賭博嗎?微信紅包接龍怎麼玩?今天就來教教大家微信紅包怎麼玩,教你玩轉微信紅包。  微信紅包火起來是因為2015年微信紅包聯手春晚,手機搖一搖微信搶紅包,帶動全國人民發紅包熱潮。只需點擊進入微信搖一搖紅包專場,搖一搖手機,就能隨機抽取微信紅包。
  • 微信紅包封面攻略!
    這回微信紅包封面,讓大家再一次HAPPY守著時間,搶好看的、喜歡的、愛豆的紅包封面。
  • 【好運攻略】6萬人都在搶!
    今天在路上聽到可以搶紅包姚師傅從9點就開始摩拳擦掌,終於在10:18分搶到了91.8的紅包,一大早就搶到紅包,今天幹活更有勁啦! 江女士也是微信平臺搶紅包的幸運兒,她說今天可給自己忙壞了,每個點位都要提前準備好,小八聯繫她的時候她正守在收音機旁等著虎哥發口令呢,
  • 春節「搶紅包大戰」太過癮?警惕這些詐騙「套路」
    春節期間搶紅包是必選動作面對紅包轟炸在拼手速滿心歡喜之餘還要警惕這些「紅包」騙局!偽裝紅包、大額紅包、搶紅包神器……警惕!近日,一個名為「北京春節補貼正在發放」的連結出現在微信朋友圈,點擊進入會跳轉到所謂「抗疫津貼補助發放中」的頁面。
  • 敬業籤怎麼綁定微信提醒功能參加搶微信紅包活動
    通過敬業籤微信公眾號完成敬業籤帳號和微信號的綁定後,可實現敬業籤定時提醒待辦事項通過微信消息通知提醒,還可以參加敬業籤不定期舉辦的搶微信紅包活動。敬業籤帳號怎麼與微信綁定?1、打開手機微信掃一掃或手動添加公眾號:敬業籤,並成功關注敬業籤微信公眾號;2、在敬業籤微信公眾號底部菜單找到「紅包提醒」想參加紅包活動需要先進行微信綁定。
  • 熱議 明知不能"發家" 中國人為什麼還愛搶"紅包"?
    去年春節,微信紅包突然走紅,殺了支付寶一個措手不及。今年離過年還有好遠,兩大巨頭就爭相給全民派發紅包。有紅包搶固然爽,可眼瞅著很多人回家又要在「啥時買房」的逼問中默默找地縫,現在卻還在搶幾毛錢一個的紅包。不管怎樣,這都讓搶紅包成為網上最火爆的流行遊戲。微信、QQ、微博、支付寶都是戰場,各路明星、企業家、領導、段子手紛紛參戰。
  • 搶紅包注意!微信紅包騙局大量出現!隱蔽性極強,錢分分鐘被騙!
    召喚深度君蜀黍請加微信號:ababymm在微信上搶紅包的小夥伴們注意,這兩天出現了一種通過微信紅包騙錢的方式。方式很簡單,就是將AA收款偽造成微信紅包,因為隱蔽性非常強,再加上現在搶紅包搶瘋了,大家看都不看就直接點擊。所以一不注意,錢分分鐘被轉走。深度君提醒大家一定要注意!
  • 【福利】春節這幾天,聽開平電臺 就可以搶新春紅包!!
    開平電臺與碧桂園•翡翠灣攜手合作,將於1月27日(除夕)至1月29日(年初二)一連三天,以發微信紅包的方式,向開平市廣大市民送上新春的祝賀!搶紅包時間:1月27日(除夕)至29日(年初二),每天8:00-23:00。送完即止。參與方式:收聽開平電臺獲得關鍵詞,然後關注開平電臺微信公眾號「飛揚956」,輸入關鍵詞,就可以點擊進入大轉盤頁面搶紅包啦!
  • 雙12丨TFBoys陪你搶300萬元紅包,狂歡美食趴……
    TFBoys要和大家一起搶紅包!他們將在雙12當天在支付寶直播口令搶紅包你只需要輸入TFBoys在直播裡給出的口令就可以搶1212元紅包喲獨家搶票通道已開啟!12號TFBOYS將親臨口碑超級狂歡派對,親自發出300萬元紅包!
  • 大年夜年初一快來搶紅包啦,最高價值800元!
    大年夜、年初一連搶兩天,根本停不下來 搶紅包活動連續兩天,分別為大年夜(18日)和年初一(19日)8:00——23:00舉行,讀者只需關注這兩天的江南晚報活動期間,每天將送出1個800元現金紅包、8個100元現金紅包、18個80元現金紅包、28個50元現金紅包、38個30元現金紅包,以及手機揚聲器、江南易購現金抵用券等好禮,累計送出的現金紅包和禮品總價值近50000元。
  • 最全微信微~QQ支?寶紅包攻略
    近30家權威媒體:邊看報紙邊掃紅包2月1日至7日,全國各大報紙、雜誌、電臺、電視臺以及其旗下微信公眾號將有「微信現金紅包雨」。另外,還有大量自媒體和網媒也同步在發紅包,不要錯過去「淋雨」呦~全國十大城市的30萬家線下門店,送出總額1億元的現金紅包。活動覆蓋餐飲,交通,服裝等眾多行業。在全國合作門店使用微信支付買單後,即可在支付成功頁面點擊「搶紅包」參與活動,紅包金額隨機,最高為666.66元。
  • 安裝微信急速搶紅包外掛,結果觀海衛一姑娘被「敲竹槓」!
    小龔請假期間搶紅包認識了一個朋友,此朋友在群裡發了「極速搶紅包」的軟體,結果因蘋果手機不能安裝,小龔就想到了小文,並將此軟體轉發給小文
  • 揭秘搶紅包必搶到秘技!除了正妹我最愛的就是錢...
    在溫哥華過新年的時候其實沒什麼太大的Feel,反而只有在微信上跟大家搶紅包的那瞬間有一種莫名的快感。可是慘的是,每次搶紅包不管我點的有多快總是搶不到!!去年大概有一個禮拜的時間,我盯著手機裡的不同紅包群,每天搶紅包到凌晨三點多,但總是出現這個畫面。。。
  • 紅包封面:便民入口!獨家!快搶!白敬亭、小紅書微信紅包封面,紅包開放平臺!
    持續為大家推薦最新紅包封面領取活動,推薦更多好友關注小編順利的去完成挑戰就行了。還可以使用微信綁定信用卡還款。使用我們的服務將更及時地提醒您注意隔離觀察。系統會將申報信息同步於「防疫健康信息碼」中 。一張「促銷狀」橫空出世。另外對於有些屬蛇的他們來說。從9月份開始。這樣你就不用擔心年糕沒煮熟。我們搜一搜。自身就很優秀。找到櫻桃小丸子紅包領取界面。因為紅包封面的數量有限。
  • 【搶紅包】鐵報財神紅包免費大派送第二彈!點擊加入搶紅包「初二」群咯!