pylogin 系列之畅言登录评论接口分析 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
anhkgg
V2EX    Python

pylogin 系列之畅言登录评论接口分析

  •  
  •   anhkgg
    anhkgg 2017-08-17 01:00:43 +08:00 2328 次点击
    这是一个创建于 3048 天前的主题,其中的信息可能已经有所发展或是发生改变。

    概述

    博客使用了畅言做评论系统(多说、网易云跟帖 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= 

    返回一张 jpg 图片,验证码处理比较简单,应该可以用 tesseract-ocr 识别,没有验证。

    changyan1.png

    评论

    登录成功后,进入后台。

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

    changyan2.png

    返回整个后台页面,通过页面元素找到评论位置,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

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2638 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 08:50 PVG 16:50 LAX 00:50 JFK 03:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86