前言
繼我開發微信機器人後 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);
- 有部分地方是非同步介面的,例如下滑滾動分頁
最後
歡迎大家來微信一起吹吹水