继微信机器人后,我又开发了微博机器人(附带分享一点抓包经验以及沙雕表情)
前言
继我开发微信机器人后 https://github.com/Hanson/vbot (今天终于 3.1K star),我又闲着无聊开发了微博机器人 https://github.com/Hanson/weibot
其实我本意并没有打算动手开发,但无奈去找相关PHP源码时,有点让我心塞
PHP 相关的包只有两个!
而且!没有一个是能够自动登录的!其中一个还是在PHP调用JS去加密密码!
换句话说就是你跑脚本的时候还要使用一下浏览器,调用一下 JS 方法,把加密好的密码复制黏贴到 PHP 脚本里。
还没见过这么骚的操作,于是我抡起键盘开始新一轮复兴 PHP 的道路。
YES!PHP CAN!!!
正片
项目链接:https://github.com/Hanson/weibot (点进去麻烦点个 star,不然浪费了我用沙雕精神去写的这篇文章)
目前实现的功能包括:
- 搜索
- 删除微博、微博评论、转发、评论并转发、转发并评论(没错,跟上个一样)
- 我的关注、取消关注
一起参与
希望大家在点 star 的同时,也能一起参与开发,本人精力有限,尽力而为,因此也简单写了开发快速入门的方法
一、登录
微博很多操作都需要登录,所以写脚本的时候先登录,让 cookie 存储起来 $weibo->login()
二、抓包
根据浏览器看到的请求,我们可以尝试模拟一下
<?php
// $client 已经是一个带 cookie 的“浏览器”客户端了,根据实际情况进行 get 或者 post
$client = \Hanson\Weibot\Api\Api::getClient();
$response = $client->post('http://weibo.com', [
'header' => [
// 如果有特殊 header 需求
],
'form_params' => [
// 各种请求参数
]
]);
// 得到的 response 有可能是页面,也有可能是接口,自行处理
$data = json_decode($response->getBody()->getContents(), true);
- 微博部分页面是基于页面渲染的模式
- 微博的渲染并不按套路出牌,而是使用了 FM.view 的内部框架
- 抓取内容需要先在 script 里正则匹配出来相关的 HTML。 例如:
preg_match_all('/Pl_Official_MyProfileFeed__20.*html\":\"(.*)\"}/', $html, $matches);
- 有部分地方是异步接口的,例如下滑滚动分页
最后
欢迎大家来微信一起吹吹水
本作品采用《CC 协议》,转载必须注明作者和本文链接
你们能不能别跟楼了。。。
推荐文章: