怎样实现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账号以及未检验的账号。如图:
image
检验过程中有可能会出现停止的现象,可以全选所有号码后,剪切再粘贴即可继续检验。

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帐号。就没有问题了。

单独发送Email

set recpName to "Sm"

set recpAddress to "2xxxxxx@qq.com"

set theSubject to "Apple Script mail hh"

set theContent to "aan and Again send using applescrip iit"

tell application "Mail"

settheMessage to make outgoing messagewith properties {subject:theSubject,content:theContent,visible:true}

telltheMessage

maketo recipientwith properties {name:recpName,address:recpAddress}

send

end tell

end tell


单独发送iMessage

tell application "Messages"

set myid to get id of second service

set theBuddy to buddy "138xxxxx" of service id myid

repeat with i from 1 to 10

send "hello, 测试一下AppleScript" to theBuddy

end repeat

end tell



  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: AppleScript是一种编程语言,专门用于Mac OS X和其他苹果计算机系统。使用AppleScript脚本,您可以编写脚本和程序来控制您的计算机并执行各种任务。 iMessage是苹果公司的一款即时通讯应用程序,专门用于iOS和Mac OS X。使用iMessage,您可以发送文本消息,照片,视频等等。 您可以使用AppleScript编写iMessage脚本来自动化iMessage消息的发送和接收,这样就可以方便地向大量人发送消息而不必一个个地输入他们的电话号码或电子邮件地址。 要使用AppleScript进行iMessage群发,请遵循以下步骤: 1.打开AppleScript脚本编辑器。您可以在Launchpad中找到它。 2.编写iMessage群发的脚本代码。您可以使用iMessage的AppleScript命令来发送消息和打开iMessage应用程序,使其更容易与iMessage集成。 3.将要发送消息的电话号码或电子邮件地址放入脚本中。 4.运行脚本并等待消息发送完成。 请注意,AppleScript脚本的编写需要一定的技能,因此如果您不熟悉这个过程,请先学习一些相关的基础知识。 最后,应该注意的是,在使用iMessage进行群发时,您需要确保已经得到所有人的许可,并且没有侵犯他们的隐私权。 ### 回答2: AppleScript是一种脚本语言,旨在帮助用户自动化和简化常见任务。如果您正在使用Mac电脑,可能已经熟悉发短信或iMessage应用程序。不过,手动发送同样消息给多个人可能会非常耗费时间和精力。这时,AppleScript就可以提供你帮助了。 iMessage是一款针对Apple设备的即时消息应用程序,它允许用户通过Wi-Fi或移动数据网络发送多媒体消息,包括照片、视频、录音等等。如果您想向多个联系人发送相同的消息,您可以使用AppleScript脚本来实现。 以下是如何使用AppleScript编写iMessage群发脚本的步骤: 步骤一:准备联系人 首先,您需要准备好要发送消息的联系人列表。您可以打开联系人应用程序并创建一个名为“iMessage Recipients”的组。将联系人添加到此组中。您还需要确保联系人的手机号码已在您的联系人列表中完成。 步骤二:打开AppleScript编辑器 打开“应用程序”文件夹中的“实用工具”,然后选择“脚本编辑器”。这将打开AppleScript编辑器,您可以使用它来编写脚本。 步骤三:编写脚本 在AppleScript编辑器中,您可以开始编写脚本。以下是一个简单的例子: set iMessageRecipients to {“+86123456789”, “+86123456789”} //将要接收iMessage消息的手机号列表 set iMessageContent to “Hello World!” //消息内容 repeat with recipient in iMessageRecipients tell application “Messages” send iMessageContent to recipient end tell end repeat 上述脚本将遍历iMessageReceipients列表中的每个条目。在 Messages 应用程序中发送消息给指定的手机号码。您可以将iMessageRecipients列表替换为您的联系人列表,将iMessageContent替换为您要发送的消息。 步骤四:运行脚本 在编写完脚本之后,您可以单击AppleScript编辑器中的“运行”按钮,或者使用快捷键“Command+R”来运行脚本。Messages 应用程序将自动打开,然后发送您的消息,您可以在屏幕上看到发送的进度。 总结: 使用AppleScript编写iMessage群发脚本,可能需要一点时间来设置您的联系人列表和编写脚本。不过一旦设置好了,对于经常需要发送同样消息给多个人来说,这个脚本会节省您大量的时间和精力。 ### 回答3: 苹果公司的Applescript脚本是一种编写自动化任务的语言,可以用来控制电脑上的各种应用程序进行指定操作。其中,iMessage是苹果公司的一款即时通讯工具,用户可以在电脑上使用iMessage应用程序进行聊天和发送短信。有些用户需要使用iMessage发送一条消息给多个联系人或群组,这时可以使用Applescript脚本来自动化完成这个任务。 编写Applescript脚本群发iMessage需要掌握一定的脚本语言知识和iMessage API接口,以下是一个简单的群发脚本示例: 1. 打开Applescript编辑器; 2. 输入以下代码: tell application "Messages" set targetBuddies to {"first contact", "second contact", "third contact"} set targetService to id of service "iMessage" repeat with theBuddy in targetBuddies set targetId to id of buddy theBuddy of service id targetService send "message content" to targetId end repeat end tell 3. 修改代码中的“first contact”、“second contact”等为你要发送的联系人的名称; 4. 将“message content”替换为你要发送的消息内容; 5. 点击菜单栏的“运行”按钮或使用快捷键Command+R来执行脚本。 上述脚本可以将“message content”发送给targetBuddies中指定的所有联系人。这只是一个简单的示例,实际使用可以根据需求进行修改。 需要注意的是,使用Applescript脚本进行iMessage群发需要开启“允许远程自动化”权限。用户可以在系统偏好设置的“安全性与隐私”中找到这个选项。同时,使用脚本进行群发也需要谨慎,尤其是针对大量联系人,避免因为过于频繁的发送消息而被判定为垃圾短信和滥用iMessage服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值