写了一个自动转发微博的bot

其实算是看到微博树洞微信树洞一类的东西都挺火的,于是动手写了一个。
也是因为微博的粉丝服务平台面向所有用户开放了,所以可以通过下发私信的方式去执行相应的操作:发微博在正文中 @平台帐号,给平台帐号私信指定的指令(比如uid中的某几位的运算结果),平台帐号转发微博。

首先是使用微博API的 statuses/mentions 接口,get接收到的最近的@主体帐号的微博(access_token直接给固定的粉丝服务平台的token即可),为了避免干扰可以筛选出原创微博;
从最新的微博id往前与sender_id进行比对,直到找到符合的微博或达到某个设定的阈值;
比较当前时间与sender_id上一次使用这个功能的时间(存入数据库或者直接粗暴地存在本地csv文件里),判断时间间隔是否超过阈值,以免滥用刷屏;
判断微博正文里是否有不希望出现的词或者链接中是否包含淘宝地址(直接用strstr()就够了;判断链接用 short_url/expand )等,视情况予以回复信息警告或拉黑;
使用 friendships/show 判断是否关注主体帐号,如果没有则提示关注后再使用(涨了不少粉..);
如果都没有问题的话,往 statuses/post post相应信息就好了,顺便把sender_id和微博id记录下来。

基本的流程就是这样,算是绕过了执行者给微博应用授权的这个过程,不过还是需要一定的人工干预(比如每天查看一次)以避免不当使用。不过最近微博APP似乎把 statuses/mentions 接口设置成只能返回授权用户的微博了(orz),想想办法还是能把这个问题给解决掉的,嗯~

2017.7更新:微博将所有涉及发布微博功能的接口合并成了 statuses/share 接口,并且要求文本中必须包含至少一个第三方分享到微博的网页URL,且该URL只能是该第三方(调用方)绑定域下的URL链接。因此原流程里最后一个转发步骤就不再可行了。一个折中的方式是把需要转发的微博URL放在文本中,并且在最后附上一个满足条件的分享网页URL(以保证能够成功调用接口),这样也算是实现了代为传播的功能了…

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注