Apple公司全線在mac os與ios兩個操做系統上內置了FaceTime與iMessage兩個應用。完美替代運營商的短信與電話。而且FaceTime與iMessage的賬號不只僅與Apple ID 綁定,同時也與使用這Apple ID的手機號碼綁定,這樣的漏洞天然給無孔不入的中國的羣發垃圾信息商們提供了後門。ios
這樣iPhone的iMessage時不時就能收到以郵件爲發送者的垃圾iMessage,尤爲是嘀嗒打車羣發的最多,據說是廈門一家公司操刀的。針對iMessage的羣發實現,新聞稿上說是花幾分鐘寫個腳本就能夠了。惋惜我花時間研究了好幾回,也沒有實現大批量羣發的實現,卻是把本身的Apple ID搞的電腦與手機不一樣步了。git
我研究怎麼實現iMessage羣發先是從XMPP協議開始的,由於Apple MAC os上的ichat是XMPP客戶端,能夠鏈接iMessage服務器,同時也可鏈接gtalk與weibo私信。但後面發現iMessage的服務器驗證是加密,沒辦法實現非ichat XMPP客戶端鏈接iMeesage服務器,那就天然沒辦法實現程序控制往iMeesage服務器批量發送信息。github
只能經過MAC OS或者iOS自帶的程序往iMeesage服務器發送信息,那要實現羣發,天然只能想辦法去調用自帶的這ichat客戶端,在MAC OS系統上Apple公司提供一種叫Apple script的腳原本自動實現任務。可能經過tell application "Messages"
就能夠激活iMessage客戶端自動發送信息。這樣實現的羣發的思路就很清楚了
1.經過AppleScript實現批量註冊itune賬號api
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億條。app
iMessage優點
iMessage與傳統短信不一樣,具備如下優點:加密
iMessage推送技術實現
羣發iMessage主要須要攻破兩個技術難點,一個是iMessage帳號的獲取,另外一個是羣發iMessage。操作系統
iMessage帳號獲取
iMessage帳號目前獲取的方法主要是掃描手機號碼。掃描手機號碼能夠經過代碼自動掃描,也能夠經過人工篩選。經過代碼自動掃描本人暫未發現很好的方法,建議你們能夠從如下兩方面着手:
要進行人工篩選,也能夠經過Mac OS自帶的iMessage客戶端。方法是編寫程序,將要驗證的號碼輸出到文件中,以逗號分隔。再將文件中的號碼粘貼到iMessage客戶端的地址欄,iMessage客戶端會自動逐個檢驗該號碼是否爲iMessage帳號,檢驗速度視網速而定。其中紅色表示不是iMessage帳號,藍色表示iMessage帳號以及未檢驗的帳號。如圖:
檢驗過程當中有可能會出現中止的現象,能夠全選全部號碼後,剪切再粘貼便可繼續檢驗。
iMessage羣發
檢驗完全部帳號後,能夠從中選取出iMessage帳號進行羣發。羣發有兩個方法,一個仍是經過iMessage客戶端,另外一個是經過AppleScript腳本控制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
須要注意以下問題:
從上面轉載的博文上能夠看出來,這哥們主要是作了簡單少數號碼的嘗試,沒有真正大量羣發過,但他在最後也提出了真正羣發會遇到問題,三個問題解決方案以下:
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