概述
博客使用了暢言做評(píng)論系統(tǒng)(多說(shuō)、網(wǎng)易云跟帖tmd相繼掛了...)。
暢言后臺(tái)可以看出功能非常強(qiáng)大,居然還有廣告業(yè)務(wù)...
but,暢言登錄之后,即使你選擇了記住登錄,也會(huì)在每次關(guān)閉瀏覽器后需要重新登錄,很累好伐!
折騰了我?guī)滋熘?,決定還是決定分析一下登錄協(xié)議,以及簡(jiǎn)單后臺(tái)操作接口,然后寫個(gè)腳本跑著吧,有新評(píng)論就給我"?!币幌拢筒挥梦页35卿浫シ?!
分析
開始分析,工具:
- chrome/firefox
- f12,network
- python
登錄
chrome打開主頁(yè)http://changyan.kuaizhan.com,F(xiàn)12,調(diào)到network的tab頁(yè),然后輸入登錄,找到登錄的包。
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 //可以沒(méi)有
name:xxx
rememberMe:true
password:1111111
vcode:1882
vipIsvId:0
_:1502508368658
//響應(yīng)
jQuery17101803876020131434_1502867163749({"data":{},"code":0,"msg":"success"}); //發(fā)送了callback
{"data":{},"code":0,"msg":"success"}; //沒(méi)有發(fā)送callback
//其他狀態(tài)
{"code":2,"msg":"驗(yàn)證碼錯(cuò)誤"};
{"code":2,"msg":"用戶名或密碼錯(cuò)誤!"}
很清晰,使用GET,ajax發(fā)送數(shù)據(jù),主要發(fā)送name, password, vcode等數(shù)據(jù),經(jīng)驗(yàn)證callback是可以不需要的,如果發(fā)送callback,返回?cái)?shù)據(jù)會(huì)包一層 jQuery17101803876020131434_1502867163749(data), 如果沒(méi)有callback,直接返回data。
很幸運(yùn)的是,password沒(méi)有做任何處理(貌似未強(qiáng)制https,那密碼不是明文了...差評(píng)?。?。沒(méi)做處理,我倒簡(jiǎn)單了,不用做多余分析了,登錄接口基本就這樣。
然后是返回?cái)?shù)據(jù),是json數(shù)據(jù),成功code是0,錯(cuò)誤code是2,然后是具體錯(cuò)誤msg。不細(xì)說(shuō)。
驗(yàn)證碼
每次登錄都需要驗(yàn)證碼,挺煩的。為了自動(dòng)登錄,還得拿到驗(yàn)證碼。
獲取驗(yàn)證碼接口如下:
Request URL:http://changyan.kuaizhan.com/verifyCode?_1502508320545
Request Method:GET
Content-Type:image/jpeg; charset=UTF-8
返回一張jpg圖片,驗(yàn)證碼處理比較簡(jiǎn)單,應(yīng)該可以用tesseract-ocr識(shí)別,沒(méi)有驗(yàn)證。

評(píng)論
登錄成功后,進(jìn)入后臺(tái)。
Request URL:http://changyan.kuaizhan.com/overview
Request Method:GET
Status Code:200 OK

返回整個(gè)后臺(tái)頁(yè)面,通過(guò)頁(yè)面元素找到評(píng)論位置,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;">本站評(píng)論審核</span></a></li>
通過(guò)r'<span class="audit-number">(\d+?)</span>'正則可以獲取到待審核評(píng)論數(shù),也就是新增評(píng)論,要的就是這個(gè)。
評(píng)論統(tǒng)計(jì)接口
獲取評(píng)論信息接口,使用的是ajax訪問(wèn)(我這用不上,順便分析下)。
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
//響應(yīng)
{"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,發(fā)送參數(shù)可以選擇時(shí)間區(qū)間。
返回?cái)?shù)據(jù)為json,具體意義如下:
cmt_data : {20170810: 1} //評(píng)論數(shù)據(jù)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 //獲取評(píng)論信息成功
total_data : {20170810: 1, 20170811: 0, 20170812: 0, 20170813: 0, 20170814: 0, 20170815: 0} // 所有評(píng)論數(shù)據(jù)
user_data : {20170810: 1} //用戶數(shù)據(jù)1條
wap_cmt_data : {} //手機(jī)評(píng)論數(shù)據(jù)
wap_reply_data : {}
wap_user_data : {}
對(duì)應(yīng)頁(yè)面如下:

總結(jié)
暢言登錄簡(jiǎn)單,密碼未做處理,安全性有待提高。
接口不統(tǒng)一,評(píng)論數(shù)據(jù)需要正則匹配。
不過(guò)為了實(shí)現(xiàn)自己的小功能,還是挺簡(jiǎn)單的!
接口分析完,通過(guò)py實(shí)現(xiàn)以下接口。自動(dòng)登錄(不識(shí)別驗(yàn)證碼,需要手動(dòng)輸入),然后每間隔30分鐘訪問(wèn)一下后臺(tái)頁(yè)面,獲取新的評(píng)論信息,如果有新的待評(píng)審數(shù)據(jù),聲音或彈窗提醒。
完畢!
安利一下公眾號(hào):漢客兒

轉(zhuǎn)載請(qǐng)注明出處,博客原文:https://anhkgg.github.io/pylogin-changyan-login-analyze/