批量關注掘金使用者

caohaoyu發表於2018-09-30

一、背景

作為一個掘金小透明,就是把日常碰到的問題在掘金上記錄一下,突然有一天看到有人加我關注了,十分好奇的點進去,結果看到浮x塵【如何關注掘金的所有小夥伴】,才明白原來是被掃出來的。

不過看到可以關注這麼多人也是很羨慕的,看到大佬是用go語言寫的,心想有時間的話我要使用PHP實現一下!

二、步驟

一、先對掘金的頁面展示邏輯進行觀察,竟然是通過介面返回的JSON,不用使用麻煩的正則去匹配資料了

二、實現思路

(1)首先考慮的是從首頁的文章逐條進行分析,把評論者獲取出來,但是想了想這樣沒有辦法獲取所有的使用者哎,
(2)接下來考慮像大佬所說的,使用者的互相關注構建出使用者網路,這樣比較靠譜!
(3)突然想到大佬已經將大部分使用者關注了,所以我不用弄什麼使用者網路了,直接把大佬的關注使用者加一遍就行!!

三、分析介面,掘金的加關注介面和獲取使用者列表都是很簡單的....再此就不贅述了

四、編碼(其實確定了實現思路後就十分簡單了)

<?php
//關注介面引數
$followData = array(
    'follower' => '59bf3ba9518825231f64bd05',   //請求使用者id(我)
    'token' => '',                              //cookie中的auth
    'device_id' => '1536978978521',             //這個不太清楚是啥
    'src' => 'web',                             //來源
    'followee' => ''                            //申請關注人id
);
//關注人列表引數
$userList = array(
    "uid" => "58a15cc70ce463005644171a",       //當前使用者id(大佬)
    "currentUid" => "59bf3ba9518825231f64bd05",//請求使用者id(我)
    "src" => "web",                            //來源
    "before" => ''                             //關注時間,每次返回這個時間之後的列表
);
$followUrl = 'https://follow-api-ms.juejin.im/v1/follow';  //關注介面
$userListUrl = 'https://follow-api-ms.juejin.im/v1/getUserFolloweeList'; //關注人列表介面
$flag = true;
while ($flag) {
    $data = file_get_contents($userListUrl);
    $followList = json_decode($data, true)['d'];
    if (count($followList) == 0) {
    $flag = false;
    }
    foreach (json_decode($data, true)['d'] as $value) {
    $userList['before'] = $value['updatedAtString'];
    $followData['followee'] = $value['followee']['objectId'];
    file_get_contents($followUrl . "?" . http_build_query($followee));
    }
    $userListUrl = $userListUrl . "?" . http_build_query($userList);
}
複製程式碼

五、後記

首先要感謝掘金,也沒啥反爬蟲的措施以及介面返回JSON帶來的極大便利
接下來就是等指令碼跑完坐擁關注6w的掘金小夥伴的成果,哈哈哈哈
在跑了1w左右的時候就已經發現有些小夥伴已經反向關注我了,好開心
------------分割線------------
由於寫的指令碼比較簡單然後異常中斷了,又加上放假,所以截止到放假前共關注了2w+使用者,今天又將指令碼開起來了,在關注到4w+使用者後,繼續加關注竟然提示:關注數達到上限。。。。應該是官方做了限制了。。。不過關注這麼多也很心滿意足了。
(ps:不過還是很好奇官方設定的關注數量上限是多少,不知道有沒有大佬能告知的)

相關文章