首页 > 其他分享 >如何实现iMessage自动群发

如何实现iMessage自动群发

时间:2024-07-04 22:31:12浏览次数:14  
标签:set end iMessage 自动 群发 tell 客户端

Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这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客户端自动发送信息。这样实现的群发的思路就很清楚了

 

 

一、iMessage推送技术实现
群发iMessage主要需要攻破两个技术难点,一个是iMessage账号的获取,另一个是群发iMessage。升级版本请参考博文首页相关文章: https://www.cnblogs.com/imblog/
#iMessage账号获取
iMessage账号目前获取的方法主要是扫描手机号码。扫描手机号码可以通过代码自动扫描,也可以通过人工筛选。通过代码自动扫描,建议大家可以从以下两方面着手
1.编写AppleScript脚本控制Mac OS自带的iMessage客户端进行验证,类似于群发iMessage。发送一条iMessage之后,如果捕获到发送失败的异常则不是iMessage账号
2.研究iOS系统中Message framework中的私有api,通过私有api进行验证

 实现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账号进行群发。群发有两个方法,一个还是通过iMessage客户端,另一个是通过AppleScript脚本控制iMessage客户端发送。
1.通过iMessage客户端发送,可直接将号码粘贴至地址栏,填写内容,发送即可。
2.通过ApplseScript控制iMessage客户端的脚本如下:以下代码可从一个csv文件中读取出iMessage账号,并通过iMessage客户端逐个发送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

 需要注意如下问题:
1.由于该脚本是控制iMessage客户端进行发送,所以必须在MacOS 10.8以上的系统中运行,同时开启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的内存。
第三个问题,在messages程序的imessage帐号中设置用来群发的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
        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

 ### 实现单独自动发送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, 测试一下哈" to theBuddy
    end repeat
end tell

###实现单独自动发送Email

set recpAddress to "[email protected]"
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}
end tell

 

标签:set,end,iMessage,自动,群发,tell,客户端
From: https://www.cnblogs.com/macos888/p/18284811

相关文章

  • 海康VM应用FAQ 1.2 全局脚本--方案加载后自动执行某流程
    【需求描述】VM方案加载成功后,自动执行某个流程。【应用场景】每次上电打开软件后,告知上位机软件准备就绪的信号;监控VM软件的运行状态,判断软件是否有奔溃,即Vm方案加载后连续运行某一流程,与上位机进行交互(与通信的心跳管理类似,不同的是通信的心跳只能监控通信是否断开,且仅为......
  • UI 自动化分布式测试 -Docker Selenium Grid
    Docker和 SeleniumGrid 的结合为分布式UI自动化测试提供了一种高效、可扩展且易于管理的方法。通过使用Docker容器化技术,测试环境的设置和配置变得更加简便和一致;而SeleniumGrid则允许在多个节点上并行运行分布式测试,从而大大提升测试的速度和覆盖范围。  ......
  • 前端页面自动渲染AE动画方案
    登录页面设计师做了很酷炫的动画效果,想到的三种实现方式:1、导出GIF图给前端渲染2、导出视频给前端渲染3、导出动画的每一帧图片给前端序列合成动画后来这三种方式因显示效果不好,体积大或者实现复杂等原因被否定了。调研经调研发现Lottie是可应用于Android,iOS,Web和......
  • webapi发布centos stream 8设置自动运行
    发布文件放到home下然后依次输入第一步:创建服务文件 首先,需要创建一个systemd服务文件。我们一般将这种服务文件放在/etc/systemd/system/目录下,并且给它一个.service后缀。例如,你可以创建一个名为wecharwebapi.service的文件。sudovi/etc/systemd/system/wecharwebapi......
  • 巴图自动化Modbus转PN网关模块连智能仪表与PLC通讯
    一、现场要求:PLC作为控制器,仪表设备作为执行设备。执行设备可以实时响应PLC传送的指令,并将数据反馈给PLC,从而实现PLC对仪表设备的控制和监控,实现对生产过程的精确控制。二、解决方案:通过巴图自动化Modbus协议转Profinet协议网关模块(BT-MDPN100),实现PLC或控制器对仪表设备的远......
  • 深入探索 Yarn 脚本:发掘自动化构建的潜力
    引言Yarn是一个现代的包管理工具,它提供了快速、可靠和安全的依赖管理方式。除了包管理,Yarn还允许开发者通过脚本来自动化构建过程,从而提高开发效率。本文将详细介绍如何查看所有可用的Yarn脚本,并展示如何利用这些脚本来优化你的开发流程。Yarn脚本简介Yarn脚本是定......
  • 关于巴图自动化Profinet协议转Modbus协议网关模块怎么配置IP地址教学
    Profinet协议和Modbus协议是工业领域中常用的两种通讯协议,除此以外还有较为常见的:ModbusTCP协议,Profibus协议,ProfibusDP协议,EtherCAT协议,EtherNET协议,CAN,CANOPEN等它们在自动化控制系统中发挥着重要作用。而将Profinet协议和Modbus协议这两种协议设备进行连接的关键就是通过巴图......
  • java使用Netty实现TCP收发消息的例子,多线程并且含断线自动重连
    需求:有一个TCP的服务,需要使用Netty开发一个TCP连接并收发消息的程序。要求多线程并且含断线自动重连能力。组织结构,使用JavaMaven编程方式功能还包含读取配置文件和log4j2写日志部分 完整代码:App.javapackagecom.LSpbxServer;importorg.slf4j.Logger;import......
  • 巴图自动化PN转Modbus RTU协议转换网关模块快速配置
    工业领域中常用的通讯协议有:Profinet协议,Modbus协议,ModbusTCP协议,Profibus协议,ProfibusDP协议,EtherCAT协议,EtherNET协议,CAN,CanOpen等,它们在自动化控制系统中发挥着重要作用。由于现实工业场景中存在Profinet协议设备和Modbus协议设备进行通讯的情况,将Modbus协议转换为Profinet协......
  • 自动测试脚本----项目文件结构介绍(common,Data,Log,Case)
    一、总体框架介绍我们先看一下一般项目的总体结构: Automation:项目工程文件Common:存放一些封装的公共函数,可在已添加的py文件中追加函数和类,也可新增py文件和包来新增公共函数。新增包时请注意不要新增文件夹,新增文件夹的话,在文件夹下新增的py文件无法import,能impor......