1. 程式人生 > >微信自動添加好友

微信自動添加好友

手工 nav 狀態 strong 操作 com 並且 block 讀者

這一次,小程演示怎麽讓一個APP自動地運作,從而代替手工的操作。同樣以“微信”以例,實現在一個微信群裏面,對所有的成員,自動地一個一個地發出添加好友的請求。

知識點還是之前介紹的東西,流程方面還是跟蹤與最終註入。因為這是一個系列的文章講解(微信公眾號“廣州小程” -> 專業技能 -> 逆向開發),所以讀者可以聯系前面的文章來理解,用自己的話“翻譯”成自己的知識與經驗。

本文解決一個問題:如何讓第三方程序自動化地運作。

(一)批量添加好友的效果

小程使用“奇哥”的賬號,在某個群裏面向所有人請求加好友,程序運作的效果是這樣的:
技術分享圖片

同樣,如果是附近的人,也是可以做到自動批量地發出請求的:
技術分享圖片

小程需要解釋一下,這種批量加好友的行為是被微信限制的,並且會對違規者作出處罰。那加人的限制是怎麽樣的?小程在網上找了一個說法,讀者可以了解一下:

2017微信加人限制規則:
微信群:最多每天30~50個
附近的人:15個每次,每天最多3次,每次之間最少間隔×分鐘;
搖一搖:15個每次,每天最多3次,每次之間最少間隔×分鐘;
搜索微信號:6個每次,每天最多5次,每次之間最少間隔×分鐘;
手機通訊錄:8個每次,每天最多6次,每次之間最少間隔×分鐘;
漂流瓶:5個每次,每天最多3次,每次之間最少間隔×分鐘;
主動加好友:每天每個微信號,最多30個;
被動加好友:每天每個微信號,最多180個。

如果被限制了,會有什麽表現呢?首先,不會有特別的通知告訴你,但你發送的請求不會去到別人那裏(如果是在“附近的人”,那就是你可以看到別人,而別人看不到你;你打呼,別人不會收到。),而且,需要過一個星期或更長時間,才能正常“交流”。

所以,應該慎用批量加好友的功能。

小程在這裏只是演示“如何自動化”,目的並非加好友。

(二)如何實現

先是跟蹤目標函數。

(1)群成員列表的界面類是什麽?

技術分享圖片

由此可見,ChatRoomInfoViewController是一個目標,它的結構是這樣的:
技術分享圖片

註意m_arrMemberList這個變量,它就是所有群成員的數組,每一個成員是一個CContact。

(2)點擊每一個群成員

點擊一個成員,就是調用- (void)openContactInfo:(id)arg1 這個函數,傳入的就是成員。

可以想像,只要循環調用這個函數,並傳入不同的成員,就可以達到批量點擊成員的目的。

(3)觸發添加成員

點擊成員後,進到“成員詳細資料”頁面,這個頁面所在類是這樣的:

技術分享圖片

再作一些猜測與跟蹤,就可以知道,點擊“添加到通訊錄”,觸發的函數是ContactInfoViewController::onSendVerifyMsg。

(4)發送請求

到了這一步,就是填寫打招呼的內容了。一個好的招呼應該是帶上對方昵稱的,而這個昵稱可以從成員信息中取得。如果微信的UITextField有長度限制(有些版本作了限制)的話,還可以重寫文本框的回調以取消限制。

發送請求的類:
技術分享圖片

(三)總結

小程在這裏面給出一個批量自動化的思路:

手動進到群成員列表,然後進入自動化流程。
在ChatRoomInfoViewController::viewDidLoad完成時,取得m_arrMemberList即成員列表,循環打開每個成員。
使用CContact::isMyContact,判斷成員是否已經添加過了,如果是則下一個成員。
每點擊一個成員時,設置一個變量的狀態,然後進入等待,直到這個變量的狀態變化,再進入下一個成員的點擊。
點擊成員,進入到“詳細資料”界面,同時,UINavigationController進入等待若幹秒(比如4秒),若幹秒後執行返回操作(不管最終是否添加成功)。
進入驗證界面,在SendVerifyMsgViewController::viewDidLoad時,設置好UITextField的內容,再觸發onSendVerifyMsg的調用。
驗證如果成功,則驗證界面會自動消失,如果失敗(失敗有回調)則需要主動調用一下成功時的調用使得驗證界面消失。這時即使有alertview彈框也不影響後續的操作。
UINavigationController執行返回操作,並設置可以下一個成員。
ChatRoomInfoViewController執行下一個成員。


總結一下,這一次小程演示了自動化添加好友的實現,重點在於對基礎技能的運用,難度系數偏高。

微信自動添加好友