怎样实现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帐号。就没有问题了。
时间: 2024-11-04 21:16:57

怎样实现iMessage群发的相关文章

imessage群发的日记

imessage群发的日记[电薇:132乄8688乄4109][Q群780516296]委员就电商法草案"打假条款"改动质疑:开倒车意大利内政部长数日不准难民上岸 遭司法部门调查11岁女孩弄坏妈妈口红被责备 带70元和书本去出走主场虫!绿城11个主场就赢了仨 凭什么冲回中超?9月围棋赛程:三星杯天府杯开赛 围甲赛会将战天津扫描新增奥运项目:它们为亚运会注入青春力量怕伤自尊?印度政府拒绝多国救灾援助国内炸锅五地发生非洲猪瘟疫情 境外传入途径尚未明确山西多名煤老板被通缉:2人系首富 有人曾

微信公众平台开发(89) 高级群发接口

在这篇微信公众平台高级接口开发教程中,我们将介绍如何开发高级群发接口功能. 本文分为以下四个部分: 准备群发内容 选择群发对象 执行群发 接收群发结果 一.准备群发内容 群发内容可以是文本.图片.语音.视频.图文.群发文本只需要文本内容,其他内容需要获得相应的media_id. 1. 文本内容 文本内容就是一段文字,比如:"微信公众平台开发最佳实践" 2. 图片.语音.视频 要求如下: ? 图片(image): 128K,支持JPG格式 ? 语音(voice):256K,播放长度不超过

C++实现邮件群发的方法

这篇文章主要介绍了C++实现邮件群发的方法,较为详细的分析了邮件发送的原理与C++相关实现技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C++实现邮件群发的方法.分享给大家供大家参考.具体如下:关于生成随机QQ邮箱不精确的问题,在之后版本打算另写一个采集器插件进行帐号采集,所以,这个软件只用来进行内容发送,邮箱进行随机生成 如果你已经有采集来的QQ号,请复制到SendList.txt 替换内容即可可以直接复制HTML代码到邮件内容,保存即可.目前邮件内容最大设置为10000字节,如

qq聊天机器人 群发工具 (java版) (一)

这是最近因为感兴趣才写的小东西,网上大多是易语言版,java仅有的版本也偏老,老版webqq协议早失效了,所以现在我写了一个最新版本的.要实现群发和自动回复消息以及更多自定义功能,首先要实现登陆QQ,这边主要介绍一下如何分析QQ协议以及如何登陆. 我并没有使用很专业的抓包工具,事实上现在的浏览器一般都能查看到get,post请求的主要内容,而我们所需要的也就是请求的内容和地址,所以一个360浏览器或者google浏览器足够我们分析了. 首先分析流程,再讲方法.第一步登陆webqq的网站,我们会看

短信群发市场一步步走向规范化

从2013年开始短信群发行业开始正式整顿,而且近年来,一年比一年更规范和严格,甚至屡屡遭到封杀.大家都知道一个新行业的出现,必然有一段鱼目混杂的时间段,然后就是一段整顿的过程,逐渐的使这个行业走向规范化. 短信群发市场也是一样的,前几年由于短信市场没有潜质的规范性,导致一些制造垃圾短信的小公司如雨后春笋般的出现,扰乱整个短信市场.幸而,国家连出政策打击和规范行业市场,使得很多广告短信公司坚持不住退出了,而退出的这些短信公司也恰恰大部分都是一些垃圾短信制造者.短信群发市场正在一步步走向规范化,相信

【免费】iPhone上最好用的短信群发软件: 高速短信4.1

免费的最新的联系人.群组.多人发送短信软件短信群发4.1已经出炉.欢迎下载! *归属地信息让你时时记着好友的地方,让陌生号码变得不陌生:  *您能够选择最经常使用的联系人然后发送高速短信; *群联系人,以及跨群发送让您更方便地发送短信. *支持emogi,短信更有特色:   *ipa包,安全,不像越狱平台第三方软件会出现白苹果隐患:   中文版: http://itunes.apple.com/cn/app//id470536032?mt=8   英文版: http://itunes.apple

C# WebQQ协议群发机器人(一)

本文地址 http://blog.csdn.net/zhujunxxxxx/article/details/38931287 转载的话请注明出处! 之前我也写过一篇使用python来实现的一个版本 点击打开链接 现在我用c#语言改写过后也放出源码来让大家学习,希望大家喜欢,不懂的相互交流, 目前我实现的一些功能包括  第一次登录  二次登陆 获取群信息  获取群好友 发送群消息 发送消息给好友 先给出一些webqq的一些参数吧 psessionid 这个是在第二次登录的时候在 cookie中的一

微信公众平台群发消息的方法及注意事项

群发消息的方法 操作方法:登录微信公众平台(https://mp.weixin.qq.com)=>群发消息=>根据需要填写文字/语音/图片/视频/录音等内容后,选择对群发对象.性别.群发地区发送即可. 群发消息内容 目前支持群发的内容:文字.语音.图片.视频.图文消息. 1.群发内容中需添加文字+图片+视频,可先在“素材管理”中设置图文消息,然后群发时选择“图文消息”类型即可. 2.上传至素材管理中的图片.语音可多次群发,没有有效期. 3.群发图文消息的标题上限为64个字节: 4.群发内容字数

【微信公众号开发】根据openId群发消息

根据开发文档可知,只要使用POST方式提交固定格式的json字符串到那个地址即可.这里我写的是最简单的文本 第一步:建立对应的实体类. 1 package cn.sp.bean; 2 3 import java.util.List; 4 import java.util.Map; 5 6 /**群发消息 7 * Created by 2YSP on 2017/7/12. 8 */ 9 public class MassMessage { 10 private List<String> tous