找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 16714|回复: 124

[N1盒子] 做一个基于N1的微博机器人吧

 火.. [复制链接]
发表于 2018-11-29 14:00 | 显示全部楼层 |阅读模式
本帖最后由 心理有数 于 2018-11-29 20:17 编辑

-----------------------------

本文首发地址:第七间夜店

-----------------------------

说是N1,事实上不局限于N1,任意可以SSH连接的设备都可以,因为是用Shell写出来的。

可以做到以下几项功能:

  • 发布制定内容的微博,包括文字和图片,可以用来实时汇报设备的状态
  • 通过在微博下评论来控制设备,比如评论一条指令,来让你的设备执行
  • 还在慢慢想
演示地址:我的微博
以及一张截图

下面是思路
首先呢,要先在微博开放平台创建一个应用,按照提示进行即可,需要注意的是要在应用信息-高级信息中将授权回调页改为
  1. https://api.weibo.com/oauth2/default.html
复制代码

由于微博Api的限制,如果需要发微博的话必须要包含一个网页URL,所以我们还需要一句提示添加一个安全域名



安全域名填什么无所谓了,有些域名是不识别的,比如我自己的.xyz域名,所以我就随便填了个进去,这个域名会在你每次发微博的时候都要接在后面的。这个确实比较坑爹,然后来看一下我们都拿到那些信息了
  1. App_Key="2261356123"
  2. App_Secret="e0c7dffa49ddc32fab306d1e9a731d35"
  3. url="http://www.ip111.cn"
  4. 授权回调页="https://api.weibo.com/oauth2/default.html"
复制代码
下面开始获取鉴权参数,就是验证你登陆的东西,一共有两个,code和access_token,在这之前,我们要借用一下浏览器里的cookies
用Chrome浏览器随意打开一个微博页面,登录进去,按F12,选择Network选项,并刷新一下


随意选择一项,右键,复制为curl



得到的curl连接并不全是我们需要的
  1. curl 'https://rm.api.weibo.com/2/remind/push_count.json?trim_null=1&with_dm_group=0&with_settings=1&exclude_attitude=1&with_common_cmt=1&with_comment_attitude=1&with_common_attitude=1&with_moments=1&with_dm_unread=1&msgbox=true&with_page_group=1&with_chat_group=1&with_chat_group_notice=1&_pid=1&count=9&source=888888883&status_type=0&callback=STK_888888888888882' \
  2. -H 'Accept-Encoding: gzip, deflate, br' \
  3. -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
  4. -H 'User-Agent: Mozilla/5.0 (Windows NT 88.0; Win88; x88) AppleWebKit/887.88 (KHTML, like Gecko) Chrome/88.0.8888.884 Safari/887.88' \
  5. -H 'Accept: */*' \
  6. -H 'Referer: https://www.weibo.com/u/8888888888/home?wvr=5' \
  7. -H 'Cookie: SINAGLOBAL=8888888888889.8888.8888888888888; _ga=GA1.2.8888888888.8888888888; Hm_lvt_88f88881c8888a88f88d0d884df88fa4=8888888888; wvr=6; un=88888888885; login_sid_t=b4efac5e0eecd88880bb888888a8888b; cross_origin_proto=SSL; _s_tentry=login.sina.com.cn; UOR=www.axxxxxxan.com,widget.weibo.com,wwxxxxxxe.com.hk; Apache=8888888888880.8888.8888888888883; ULV=8888888888882:88:88:88:8888888888880.8888.8888888888883:8888888888888; SUBP=8888WrSXqPxfM885Ws9jqgMF88889P9D9WhfYXJ3fUg1NJy5SSnxxxxxpX5K2hUgL.Fo-cehq4ehBX1h.xxxxxxxxUhIGUQMcHV; ALF=8888888888; SSOLoginState=8888888888; SCF=Ai1a8cAJxxxxx2tfJrTxxxqmi2W5QfVzBUIhI3aUxxxxxxKP2L4Zy5_MLYxxxxxxjvJ4xxxxxxHMZZ-xULspQxg.; SUB=_2A882-wEvDeRhxxxxxxxxxxxxxxxxrIwzWIHXVScxxxxxxxxxxxxxxNbmtAKLxxxxxxxxxxxxxLl88wwIkh88HEpHbHAjxxxxxxxxxBR_H2; SUHB=0TPVjWcHcnBuM3' \
  8. -H 'Connection: keep-alive' --compressed
复制代码
我们只需要 -H 'cookie这一行
  1. -H 'Cookie: SINAGLOBAL=8888888888889.8888.8888888888888; _ga=GA1.2.8888888888.8888888888; Hm_lvt_88f88881c8888a88f88d0d884df88fa4=8888888888; wvr=6; un=88888888885; login_sid_t=b4efac5e0eecd88880bb888888a8888b; cross_origin_proto=SSL; _s_tentry=login.sina.com.cn; UOR=www.axxxxxxan.com,widget.weibo.com,wwxxxxxxe.com.hk; Apache=8888888888880.8888.8888888888883; ULV=8888888888882:88:88:88:8888888888880.8888.8888888888883:8888888888888; SUBP=8888WrSXqPxfM885Ws9jqgMF88889P9D9WhfYXJ3fUg1NJy5SSnxxxxxpX5K2hUgL.Fo-cehq4ehBX1h.xxxxxxxxUhIGUQMcHV; ALF=8888888888; SSOLoginState=8888888888; SCF=Ai1a8cAJxxxxx2tfJrTxxxqmi2W5QfVzBUIhI3aUxxxxxxKP2L4Zy5_MLYxxxxxxjvJ4xxxxxxHMZZ-xULspQxg.; SUB=_2A882-wEvDeRhxxxxxxxxxxxxxxxxrIwzWIHXVScxxxxxxxxxxxxxxNbmtAKLxxxxxxxxxxxxxLl88wwIkh88HEpHbHAjxxxxxxxxxBR_H2; SUHB=0TPVjWcHcnBuM3'
复制代码
最好找一个记事本,保存下来,以后还有许多地方需要用到。
然后我们需要让curl带着cookies来访问这个链接
  1. https://api.weibo.com/oauth2/authorize?redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code&client_id=<App_Key>
复制代码
  1. curl -LI "https://api.weibo.com/oauth2/authorize?redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code&client_id=<App_Key>" \
复制代码
会得到这样的返回值

对其筛选出我们需要的code值
  1. curl -LI "url" | grep Location | sed 's/.*=//g'
复制代码
得到的code值带有一个回车,再把回车处理掉
  1. truecode=${codee:0:32}
复制代码
就得到32位的code字符串了,然后去换取access_token
  1. curl 'https://api.weibo.com/oauth2/access_token' -d "client_id=<your app key>&client_secret=<your secret key>&grant_type=authorization_code&code=<上一步获取的truecode>&redirect_uri=https://api.weibo.com/oauth2/default.html" | jq -r '.access_token'
复制代码
access_token生命周期为一天,如果你创建的应用通过审核的话,就是30天,你也可以把自己搞成开发者测试token,生命期是五年
接下来使用access_token来发布微博
  1. curl 'https://api.weibo.com/2/statuses/share.json' \
  2. -F "access_token=${token}" \
  3. -F "status=${bobo}<你的安全域名>"  | jq '.'
复制代码
$boob就是你要发微博的内容,可以任意定义内容。
如果需要附加图片,也很简单,只需要添加一行代码即可
  1. -F "pic=@${ppic};type=image/jpeg"
复制代码
$ppic用来指定图片的位置,需要使用绝对路径,比如
  1. /root/xxx.jpg
复制代码

我没有测试具体支持那些图片格式,大家自己测试吧,不过都8102年了,最好使用Jpg吧
我们还可以通过读取微博评论的方式来读取指令让你的设备来执行
  1. curl 'https://api.weibo.com/2/comments/show.json?access_token=<你的token>&id=666' | jq -r '.comments[0] | .id,.text'
复制代码
可以读取微博id为666的最新一条评论以及评论的id
如果我们评论一条指令,并且让设备不停的读取该微博下的评论,就可以及时获取并执行该指令,为了防止重复执行,我们还应该在执行之后及时删除该评论
  1. curl 'https://api.weibo.com/2/comments/destroy.json' \
  2. -d 'access_token=<你的token>&cid=<上面获取的评论id>' > /dev/null
复制代码


稍后我会把完整代码放上来,供大家参考

评分

参与人数 2恩山币 +2 收起 理由
lhxkkk + 1 强大的恩山!(以下重复1万次)
right234 + 1 How ever,this is JB useful!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-29 14:05 来自手机 | 显示全部楼层
牛逼普拉斯!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:08 来自手机 | 显示全部楼层
一个大草包,如果您要查看本帖隐藏内容请回复
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:08 | 显示全部楼层
把微博当媒介系列

点评

没错,就是这样  详情 回复 发表于 2018-11-29 14:09
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2018-11-29 14:08 | 显示全部楼层


图中这一行代码有误,应为
  1. curl -LI "https://api.weibo.com/oauth2/authorize?redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code&client_id=<App_Key>" \
  2. -H 'Cookie: SINAGLOBAL=8888888888889.8888.8888888888888; _ga=GA1.2.8888888888.8888888888; Hm_lvt_88f88881c8888a88f88d0d884df88fa4=8888888888; wvr=6; un=88888888885; login_sid_t=b4efac5e0eecd88880bb888888a8888b; cross_origin_proto=SSL; _s_tentry=login.sina.com.cn; UOR=www.axxxxxxan.com,widget.weibo.com,wwxxxxxxe.com.hk; Apache=8888888888880.8888.8888888888883; ULV=8888888888882:88:88:88:8888888888880.8888.8888888888883:8888888888888; SUBP=8888WrSXqPxfM885Ws9jqgMF88889P9D9WhfYXJ3fUg1NJy5SSnxxxxxpX5K2hUgL.Fo-cehq4ehBX1h.xxxxxxxxUhIGUQMcHV; ALF=8888888888; SSOLoginState=8888888888; SCF=Ai1a8cAJxxxxx2tfJrTxxxqmi2W5QfVzBUIhI3aUxxxxxxKP2L4Zy5_MLYxxxxxxjvJ4xxxxxxHMZZ-xULspQxg.; SUB=_2A882-wEvDeRhxxxxxxxxxxxxxxxxrIwzWIHXVScxxxxxxxxxxxxxxNbmtAKLxxxxxxxxxxxxxLl88wwIkh88HEpHbHAjxxxxxxxxxBR_H2; SUHB=0TPVjWcHcnBuM3'
复制代码
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:09 | 显示全部楼层
看看什么东西
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2018-11-29 14:09 | 显示全部楼层

没错,就是这样
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:24 | 显示全部楼层
看看看。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:25 来自手机 | 显示全部楼层
看看。乙的我在哪个月
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:26 | 显示全部楼层
看看看。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:26 | 显示全部楼层
看看思路参考参考
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:27 | 显示全部楼层
如果您要查看本帖
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:28 | 显示全部楼层
是什么好思路,看看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 14:36 来自手机 | 显示全部楼层
砑大兄弟,拜读了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2018-11-29 15:23 | 显示全部楼层
学习学习  
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-20 12:09

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表