/ 技术

如何用脚本调用Messages.app发信息,自动回复信息(一)

现在短信这个玩意,基本上已经变成收验证码和收垃圾广告的工具了,想想当年我们上大学的时候,为了给女朋友发短信,想尽各种办法寻找便宜的或者免费的发短信的方式,订购移动运营商的各种短信包,走飞信,走139邮箱短信提醒等等...谁让我们是穷逼大学生呢。
现在我们的短信收件箱,除了验证码就是各种优惠活动和澳门赌场之类的黑产了吧~黑产们利用iMessage免费的利好,通过技术手段自动给任意手机号发送推广信息,他们是怎么做到的呢?

了解 AppleScript

AppleScript是苹果公司开发的一种脚本语言,可以用来控制运行于Mac OS上的程序,也可以写成独立运行的Applet。最早版本在1993年十月推出,在System 7(System 7.1.1)运行。

是的,他们就是用AppleScript脚本来控制mac系统上的信息app(Messages.app)来实现自动发信息的。

脚本

  1. 脚本编辑器

WX20180619-151947@2x
在你的Launchpad的有这么一个应用,没有找到的话,看看是不是在你的其他文件夹里面。打开这个应用,然后从菜单里面的文件-打开词典,他会弹出来一个应用列表,这里面的应用就是都支持AppleScript控制的应用,找到信息这个应用,选取打开你会看到如下图所示
WX20180619-152426@2x

其中Messages Suite里面罗列了一批指令,比如log in,send等,这些就是控制指令,可以主动操作信息app,下面的窗口里面也有相关指令的介绍和参数介绍。这里就不过多解释了。下面咱们就来说说怎么写脚本代码吧~

  1. 脚本编写

主动发信息调用的是send这个指令,可以看到他的说明是

send v : Sends a message or file to a buddy or to a chat.
send text or file
to buddy or text chat

buddy是指单一个人,就是发送给个人,私聊的概念吧。
chat是iMessage群组

打开你的脚本编辑器,新建一个空脚本,写入如下代码

on run {targetBuddyPhone, targetMessage}
	tell application "Messages"
		set targetService to 1st service whose service type = iMessage
		set targetBuddy to buddy targetBuddyPhone of targetService
		send targetMessage to targetBuddy
	end tell
end run

第一行是指脚本接受两个参数targetBuddyPhone,targetMessage,一个是收信人的手机号,一个是信息内容。
第二行的内容是指定控制的应用为Messages.app,就是信息这个应用。
第三行第四行是为了获取到收信人的iMessage账号信息。
第四行就是把内容发送给这个收信人。

是不是感觉很简单?保存一下这个脚本,命名为sendMessage,会在你保存的目录生成一个sendMessage.scpt文件,怎么调用这个脚本呢?使用macos内置的osascript指令调用applescript脚本。

$ osascript sendMessage.scpt 13888888888 "Hello World!"

注意事项:请在运行这个命令之前先打开信息应用,并先给13888888888手动发一条信息,之后,再运行上述命令。

你就会发现信息应用自己弹出来并发送了一条消息给你指定的人。

  1. 脚本新建对话

上面玩过之后,你会问,这要自己手动新建一个对话,还要手动发过一条信息之后才能用脚本自动给对方发消息,那还玩个毛啊。我要是要学澳门威尼斯xxx那样群发好几千几万人,手动新建不得累死去啊。
是的,你问对了同学,说明你很有商(fan)业(zui)头(tian)脑(fu)啊!那么如何才能用脚本新建对话呢?

预知后事如何,且听下回分解