1,目标网站如下:一个内部管理系统,但功能单一,使用及其不便。项目目的是借助自动化手段爬取目标信息,转存至本地数据库,以便进行定制化的数据分析和报表呈现。
2,实现设想:使用脚本工具(powershell)模拟网站登录过程。合法登陆当前会话,取得所需数据。
3, 本地存储cookie文件。Chrome安装EditThisCookie插件。随后登陆目标网站,按f12就可以看到cookie页签。全选复制,存放到本地即可。注意cookie文件很快就会过期,如果文件过期要更新。
4,感谢mooser lee大神的分享。以下代码可以从cookie文件中拿到token数组,并且赋值到$session变量里,这个时候如果用invoke-webrequest或者invoke-restmethod带$Websession参数测试一下,就可以发现已经可以登录网站了,只不过只能抓取网页中的静态内容。
5,为了能够抓取网站的动态内容,继续分析网站,继续使用chrome F12,点选到network页签,只过滤xhr,按F5刷新页面抓包。
6,F5刷新后,会抓到很多内容,一个一个查看,一定会找到某个响应(response)的内容是你想要的。如下图:把响应内容复制出来跟网页做对比,可以看出就是第一个页面的列表中的内容。这样就锁定了需要爬取的url。
7,选中前面的headers页签,查看request method。可以看到网页采用的是POST的方法,需要传参(如果是get方法会方便很多,具体可以百度~~)。
8,headers页签往下拉,可以看到很多参数。
9,参数添加到headers数组备用。并不是所有参数都必须带,我挑了几个写的,大家也可以自己试试….
10,继续往下拉看到payload。这部分是body参数。
11,如图,直接复制粘贴,新建变量备用即可。这个比较长,注意中间需要加几个转义符。
12,最后祭出invoke-webrequest大法,一行命令搞定:
在$r的属性content里,就可以查看到动态网页的内容。
先分享这么多…. 现在的脚本中的url只是直接使用了当前会话的临时变量,要写成可用的脚本的话,还需要抓取几个组成url的必需变量,正在研究该怎么做…
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
贴图呢???
脚本呢???