本帖最后由 kvieta丶心灵 于 2016-12-8 16:25 编辑
嗨~又见面了大家~上一节的内容不知道各位有没有认真看呢?当然,不认真看也没关系,照着代码抄就可以了,如果你想一直当菜鸟的话…… 本节主要用易语言模拟登陆前程无忧,用于采集个人简历用,因为前程无忧必须登陆以后才能查看简历,只能采集免费的哦~~收费的可以私密我~ 好啦~我们开始进入本节内容吧~ 1.前期准备I 用上节介绍的火狐浏览器,打开http://ehire.51job.com/MainLogin.aspx,没有账号的自己注册一个,不提供测试账号。 II F12打开开发者工具切换到网络标签,输入用户名密码。先别急着点登陆。 III 清空所有请求数据。
如下图: 2.开始抓取登陆信息并分析
然后我们点击登陆,会出现如下图所示的样子:
哇,好多数据请求呀~到底哪些是有用的呢? 一般来说,我们点击登陆会提交账号密码给后台,会发送一个请求,基本上都是post方式,所以我们先分析post方式的请求。翻到最上边。如图可以看见一条post请求:
看文件名UserLogin,这个光看名字就知道是啥意思了,直接点它,右边弹出数据的详细信息,如下图:
然后我们点击响应或者预览,发现里面没有东西,如下图:
为啥呢……不是已经登陆了吗?那是因为我们只是提交了用户信息,服务器收到以后要返回东西给我们呀~所以我们会收到一个get方式的数据请求,刚好第二条是get,我们点击看一下,如下图:
呢……奇怪呀,为啥响应和浏览里面还是没内容呢?不急,我们继续点击下一条数据。如下图:
有东西了!!!!刚好和页面显示的一模一样,那么我们可以得出一个结论,当我们点击登陆的时候,发送用户名和密码给服务器,服务器返回两次信息给我们,第一次返回:UserLoginJump.aspx文件,然后从UserLoginJump.aspx文件下跳转到Navigate.aspx,这就是我们登陆以后的用户管理页,分析完以后我们来模拟第一条数据请求,如下图:
需要发送什么东西呢?我们可以看参数项里面的内容,如下图:
这些就是点击登陆以后提交给服务器的内容了,第一二个是用户名,第三个是密码,多次测试发现: ctmName:“XXX” userName:“XXX” password:“XXX” checkCode:“” oldAccessKey:“7d91df74837b4ed” langtype:“Lang=&Flag=1” isRememberMe:“true” sc:“dd3ac428a705daad” ec:“336afeccd465416189c149eb737256eb” returl:“” checkCode、langtype、isRememberMe 、sc 、ec、returl这几个参数按默认提交就可以,那么就剩下一个oldAccessKey参数,那这个值怎么获取呢?一般来说,这些提交参数都可以在登陆页里面的网页内容找得到,但是特殊的要在js文件里面找到相应的算法得出(此处不做讲解,因为前程无忧的可以在登陆页网页内容找得到),那咱们就退出登录呗。然后右键查看网页源代码,Ctrl+F查找AccessKey,如下图:
这就是oldAccessKey的值,我们可以获取到登陆页的页面内容然后取出这个值,怎么弄?看代码:
这样我们就获取出登陆页面的网页代码,然后取出这个值,分析下网页代码,发现
这个值处于id="hIDAccessKey" value="和" 之间(必须是页面你唯一的一串文本,不然可能获取到的不是这个值)我们用精易模块里面的文本_取出中间文本()命令取出这个值,如下图:
成功获取出来了!然后我们修改下这个子程序,让它返回这个值:好啦~然后我们回到之前,重复上面的登陆步骤,回到如图所示的内容:
我们右键这条数据,然后复制POST数据,如图:
然后我们在每一项前面加上&,并且复制到我们写好的程序里面,如下图:
这样我们模拟第一条请求就写好啦~我们测试一下……突然看官中有一位机智的小伙伴举起了双手,请问下我怎么知道他发送成功啦?喂喂喂,好奇心害死人知道不,咱就不和你一般见识,不就是想知道是不是正确的嘛……方法多得去了,我就说一种比较蠢但是很实用的方法,验证响应头是不是一样的。看代码(为什么这么写?请根据上节内容自行探讨):
然后我们对比浏览器的是不是一样的
0.0 啥情况……按道理应该是一样的呀?什么鬼啊!神经病啊!我们仔细想想是不是差点啥……程序君心里面默默的说了一句:请求头被你吃掉啦?你不给我怎么给你获取正确啊!Soga,感谢程序君的提醒,那咱们加上请求头吧……
(脾气真大)如下图:
经过测试发现只要加上Referer、Content-Type这两个就可以获取。看官们自行测试。到这里会出现两种情况,第一种是和浏览器的响应头一样,第二种是不太一样,不一样的如下图:
如果出现这种情况,说明你测试过了,并且账号已经登陆,不信你在浏览器上登陆,你会发现你的账号已经登陆了!如下图所示:
好啦,本节教程就到这里,下节我将会教大家怎么跳转到用户管理页。大家也可以自己试着模拟哦~再见~
|