pylogin系列之暢言登錄評論接口分析

概述

博客使用了暢言做評論系統(多說、網易雲跟帖tmd相繼掛了…)。
暢言後臺可以看出功能非常強大,居然還有廣告業務…
but,暢言登錄之後,即使你選擇了記住登錄,也會在每次關閉瀏覽器後需要重新登錄,很累好伐!

折騰了我幾天之後,決定還是決定分析一下登錄協議,以及簡單後臺操作接口,然後寫個腳本跑着吧,有新評論就給我”叮”一下,就不用我常常登錄去翻了!

分析

開始分析,工具:
1. chrome/firefox
2. f12,network
3. python

登錄

chrome打開主頁http://changyan.kuaizhan.com,F12,調到network的tab頁,然後輸入登錄,找到登錄的包。

Request URL:http://changyan.kuaizhan.com/loginAjax?callback=jQuery17107352265034825938_1502508074058&name=xxx&rememberMe=true&password=1111111&vcode=4795&vipIsvId=0&_=1502508184633
Request Method:GET
Status Code:200 OK

Host:changyan.kuaizhan.com
Referer:http://changyan.kuaizhan.com/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36
X-Requested-With:XMLHttpRequest

callback:jQuery17107352265034825938_1502508074059 //可以沒有
name:xxx
rememberMe:true
password:1111111
vcode:1882
vipIsvId:0
_:1502508368658

//響應
jQuery17101803876020131434_1502867163749({"data":{},"code":0,"msg":"success"}); //發送了callback
{"data":{},"code":0,"msg":"success"}; //沒有發送callback

//其他狀態
{"code":2,"msg":"驗證碼錯誤"}; 
{"code":2,"msg":"用戶名或密碼錯誤!"}

很清晰,使用GET,ajax發送數據,主要發送name, password, vcode等數據,經驗證callback是可以不需要的,如果發送callback,返回數據會包一層 jQuery17101803876020131434_1502867163749(data), 如果沒有callback,直接返回data。

很幸運的是,password沒有做任何處理(貌似未強制https,那密碼不是明文了…差評!)。沒做處理,我倒簡單了,不用做多餘分析了,登錄接口基本就這樣。

然後是返回數據,是json數據,成功code是0,錯誤code是2,然後是具體錯誤msg。不細說。

驗證碼

每次登錄都需要驗證碼,挺煩的。爲了自動登錄,還得拿到驗證碼。

獲取驗證碼接口如下:

Request URL:http://changyan.kuaizhan.com/verifyCode?_1502508320545
Request Method:GET

Content-Type:image/jpeg; charset=UTF-8

返回一張jpg圖片,驗證碼處理比較簡單,應該可以用tesseract-ocr識別,沒有驗證。

這裏寫圖片描述

評論

登錄成功後,進入後臺。

Request URL:http://changyan.kuaizhan.com/overview
Request Method:GET
Status Code:200 OK

這裏寫圖片描述

返回整個後臺頁面,通過頁面元素找到評論位置,html代碼如下:

<li class="right-sub-li "><a href="/audit/comments/TOAUDIT/1" style="text-indent:25px;">
    <span class="audit-number">2</span>
    <span style="text-indent:0px;">本站評論審覈</span></a></li>

通過r'<span class="audit-number">(\d+?)</span>'正則可以獲取到待審覈評論數,也就是新增評論,要的就是這個。

評論統計接口

獲取評論信息接口,使用的是ajax訪問(我這用不上,順便分析下)。

Request URL:http://changyan.kuaizhan.com/stat-data/comment
Request Method:POST
Status Code:200 OK

Host:changyan.kuaizhan.com
Origin:http://changyan.kuaizhan.com
Referer:http://changyan.kuaizhan.com/overview
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36
X-Requested-With:XMLHttpRequest

start:20170805
end:20170811
categoryId:0

//響應
{"sdk_user_data":{},"user_data":{"20170810":1},"sdk_cmt_data":{},"wap_cmt_data":{},"total_data":{"20170810":1,"20170811":0},"recommender_data":{},"wap_user_data":{},"cmt_data":{"20170810":1},"wap_reply_data":{},"flood_data":{"20170810":0,"20170811":0},"sdk_reply_data":{},"success":true}

接口使用ajax POST,發送參數可以選擇時間區間。

返回數據爲json,具體意義如下:

cmt_data : {20170810: 1} //評論數據1條
flood_data : {20170810: 0, 20170811: 0, 20170812: 0, 20170813: 0, 20170814: 0, 20170815: 0} //每天flooddata多少條
recommender_data : {}
sdk_cmt_data : {}
sdk_reply_data : {}
sdk_user_data : {}
success : true //獲取評論信息成功
total_data : {20170810: 1, 20170811: 0, 20170812: 0, 20170813: 0, 20170814: 0, 20170815: 0} // 所有評論數據
user_data : {20170810: 1} //用戶數據1條
wap_cmt_data : {} //手機評論數據
wap_reply_data : {}
wap_user_data : {}

對應頁面如下:

這裏寫圖片描述

總結

暢言登錄簡單,密碼未做處理,安全性有待提高。

接口不統一,評論數據需要正則匹配。

不過爲了實現自己的小功能,還是挺簡單的!

接口分析完,通過py實現以下接口。自動登錄(不識別驗證碼,需要手動輸入),然後每間隔30分鐘訪問一下後臺頁面,獲取新的評論信息,如果有新的待評審數據,聲音或彈窗提醒。

完畢!

轉載請註明出處,博客原文:https://anhkgg.github.io/pylogin-changyan-login-analyze/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章