當前位置:名人名言大全網 - 短信平臺 - 怎樣實現iMessage群發

怎樣實現iMessage群發

怎樣實現iMessage群發

Apple公司全線在mac

os與ios兩個操作系統上內置了FaceTime與iMessage兩個應用。完美替代運營商的短信與電話。並且FaceTime與iMessage的帳號不僅僅與Apple

ID 綁定,同時也與使用這Apple ID的手機號碼綁定,這樣的漏洞自然給無孔不入的中國的群發垃圾信息商們提供了後門。

這樣iPhone的iMessage時不時就能收到以郵件為發送者的垃圾iMessage,尤其是嘀嗒打車群發的最多,聽說是廈門壹家公司操刀的。針對iMessage的群發實現,新聞稿上說是花幾分鐘寫個腳本就可以了。可惜我花時間研究了好幾次,也沒有實現大批量群發的實現,倒是把自己的Apple

ID搞的電腦與手機不同步了。

我研究怎麽實現iMessage群發先是從XMPP協議開始的,因為Apple

MAC

os上的ichat是XMPP客戶端,可以連接iMessage服務器,同時也可連接gtalk與weibo私信。但後面發現iMessage的服務器驗證是加密,沒辦法實現非ichat

XMPP客戶端連接iMeesage服務器,那就自然沒辦法實現程序控制往iMeesage服務器批量發送信息。

只能通過MAC

OS或者iOS自帶的程序往iMeesage服務器發送信息,那要實現群發,自然只能想辦法去調用自帶的這ichat客戶端,在MAC

OS系統上Apple公司提供壹種叫Apple script的腳本來自動實現任務。可能通過tell

application "Messages"就可以激活iMessage客戶端自動發送信息。這樣實現的群發的思路就很清楚了

1.通過AppleScript實現批量註冊itune帳號

2.通過AppleScript實現自動取壹個itune帳號群發100個APPle

ID的iMessage

set EMAIL to "EMAIL_DEL_DESTINATARI" -- el destinatari ha de tenir l'iMessage activat

set MSG to "COS_DEL_MISSATGE"

set N to the 1000 -- nombre de vegades que s'enviarà el missatge

set APPLE_ID to "E:" -- la teva Apple ID que ha de tenir iMessage activat

repeat N times

tell application "Messages"

send MSG to buddy EMAIL of service APPLE_ID

end tell

end repeat

看來新聞稿沒有說錯,實現iMessage群發確實只要幾分鐘寫腳本。但懂用使用iMessage的用戶顯然不是買iPhone裝逼用的用戶,妳群發的iMessage除騷擾又能帶來什麽樣的效果喲。

後面在網上搜索到壹個更詳細的博客說明,轉載如下:

iMessage介紹

iMessage是蘋果設備(iPad、iPhone、iPod

touch)自帶的免費信息發送應用。它的信息通過網絡發送,不同於運營商短信。目前iMessage日活躍用戶1.9億,日發送約20億條。

iMessage優勢

iMessage與傳統短信不同,具有以下優勢:

目標人群明確,均為蘋果用戶,消費能力較強

文字數量不限,同時還可以添加表情和圖片

可以添加網址、下載鏈接等,用戶可以直接通過手機訪問

不會被手機安全衛士攔截

轉發就像手機短信壹樣方便

無發送成本

送達終端的概率極高

iMessage推送技術實現

群發iMessage主要需要攻破兩個技術難點,壹個是iMessage賬號的獲取,另壹個是群發iMessage。

iMessage賬號獲取

iMessage賬號目前獲取的方法主要是掃描手機號碼。掃描手機號碼可以通過代碼自動掃描,也可以通過人工篩選。通過代碼自動掃描本人暫未發現很好的方法,建議大家可以從以下兩方面著手:

1.編寫AppleScript腳本控制Mac

OS自帶的iMessage客戶端進行驗證,類似於群發iMessage。發送壹條iMessage之後,如果捕獲到發送失敗的異常則不是iMessage賬號

2.研究iOS系統中Message

framework中的私有api,通過私有api進行驗證

要進行人工篩選,也可以通過Mac

OS自帶的iMessage客戶端。方法是編寫程序,將要驗證的號碼輸出到文件中,以逗號分隔。再將文件中的號碼粘貼到iMessage客戶端的地址欄,iMessage客戶端會自動逐個檢驗該號碼是否為iMessage賬號,檢驗速度視網速而定。其中紅色表示不是iMessage賬號,藍色表示iMessage賬號以及未檢驗的賬號。如圖:

檢驗過程中有可能會出現停止的現象,可以全選所有號碼後,剪切再粘貼即可繼續檢驗。

iMessage群發

檢驗完所有賬號後,可以從中選取出iMessage賬號進行群發。群發有兩個方法,壹個還是通過iMessage客戶端,另壹個是通過AppleScript腳本控制iMessage客戶端發送。

通過iMessage客戶端發送,可直接將號碼粘貼至地址欄,填寫內容,發送即可。

通過ApplseScript控制iMessage客戶端的腳本如下:

tell application "Messages"

set csvData to read "/Users/xxxx/Desktop/test.csv"

set csvEntries to paragraphs of csvData

repeat with i from 1 to count csvEntries

set phone to (csvEntries's item i)'s text

set myid to get id of first service

set theBuddy to buddy phone of service id myid

send "今天北京晴,氣溫13到27度;周二晴,氣溫11到26度,北風3-4級;周三晴,氣溫11到24度,微風<3" to theBuddy

end repeat

end tell

以上代碼可從壹個csv文件中讀取出iMessage賬號,並通過iMessage客戶端逐個發送iMessage消息。

需要註意如下問題:

1.由於該腳本是控制iMessage客戶端進行發送,所以必須在MacOS

10.8以上(10.7系統中的iMessage Beta版本已無法使用)的系統中運行,同時開啟iMessage程序。

2.該腳本在發送iMessage時並不是後臺發送,所以當發送量很大時,會導致iMessage客戶端運行緩慢,甚至無法開啟。可通過清空所有已發送的iMessage或註銷賬號解決。

3.通過腳本發送的iMessage賬號必須是在當前iMessage客戶端中檢驗過的,否則會報“不能獲得“buddy

id "C0B35E7F-A0FB-49E1-BDD7-C867BC06D920:+86136xxxx0000"”。

從上面轉載的博文上可以看出來,這哥們主要是做了簡單少數號碼的嘗試,沒有真正大量群發過,但他在最後也提出了真正群發會遇到問題,三個問題解決方案如下:

第壹個問題用mac

os系統或者黑蘋果裝10.8操作系統,會自帶messages程序,這程序系統自帶,千萬不會發現打不開去刪除Messages程序,刪除就只能重裝系統了。並且是先打開Messages程序,再啟動apple

script腳本,不然運行不正常。

第二個問題,在發送過程中加入同步刪除的代碼,但同步壹條壹條刪除時有時會失敗,所以再增加發壹定量後再批量刪除壹次的操作,正常的流程應該是打開Messages程序->循環號碼庫->讀取壹個號碼->發送壹條信息->等待1秒->刪除此條信息->判斷是否未刪除的超過100條,是批量刪除->循環號碼庫。這樣就可以保證Messages程序不會去占百分壹百多的CPU或者幾個G的內存。

tell application "Messages"

set csvData to read "/Users/xxxx/Desktop/test.csv"

set csvEntries to paragraphs of csvData

repeat with i from 1 to count csvEntries

set phone to (csvEntries's item i)'s text

set myid to get id of first service

set theBuddy to buddy phone of service id myid

send "今天北京晴,氣溫13到27度;周二晴,氣溫11到26度,北風3-4級;周三晴,氣溫11到24度,微風<3" to theBuddy

delay 1 -延時壹秒,不然取不到已發達的內容

set FailNum to (get count chat)

if FailNum>100 then

repeat with j from 1 to FailNum

set phone to (get name of chat (FailNum-j))

set DelMsg to "iMessage;-;" & phone

if exists (text chat id DelMsg) then

delete text chat id DelMsg

end if

end repeat

end if

end repeat

end tell

第三個問題,在messages程序的imessage帳號中設置用來群發的imessage帳號。就沒有問題了。