之前做了一个网页表格导出excel 的数据抓取功能,原因是当前网站没有入口把数据导出。
然后用上了
1、egg.js做服务端(现成的日志系统和异常重启)
2、natapp做内网穿透(域名是动态,隔几天会变)
3、excel4node 做表格导出(批量下载表格里的图片到本地,再插入本地图片到sheet表里)
第一步就是用node去拉去列表数据,发现一开始可以拉取,后面就报错异常操作,然后冷静了一天,第二天工作之余去看了他们的页面,看到每次获取数据前有一个类似上报的接口请求,查看详情发现里面有记录类似行为的东西
1 | '[{"events":[{"event":"onload","params":"{\"app_id\":29 ... |
然后直接右键请求把接口复制cURL的请求格式,存放到bash里用curl命令去模拟用户行为的接口,把cookie数据也能一起拿出来很方便
1 | result="$(curl 'https://mcs.zijieapi.com/list' \ |
然后继续模拟修改分页行数的行为,拉取服务器允许的最大条数100条数据,这样就完成了第一步。
后面的难度就不大了。
总结:
· 一开始就用了node做了一个本地功能然后用上 pkg 的插件做一个跨端的打包功能
后来版本bug 更新多,加上excel4node 在win10打包后闪退,日志不能随时查看到(使用端是别人)
所以考虑做个服务端,随时更新重启,随时查看日志
· 单纯的服务端接口,如果没有权限验证,很容易被人盗用爬取数据,所以用一个前置行为约束接口权限是一种相对更安全的做法,在行为里加入时间戳,点击位置等参数,更严格控制是否是真人行为(和滑动验证码异曲同工)