·思路描述
先通过浏览器使用账号正常登陆网站,分析提交的表单可以用火狐或者其他抓包工具,这里推荐火狐,它可以抓取到重定向前的请求,而重定向前的http请求就包含了模拟登录需要的各项参数(如账号、密码、其他字符)。如下图,输入账号密码,右键打开“查看元素”,点击“sign in”登录
登陆之后,观察控制台的请求变化情况,登录成功后如下图,
如图,火狐的优势就显现出来了,第一个POST请求就是实际登录的http请求(初次分析时当做调试,不是百分百确定是这个URL,但一般“登录”操作的请求方式都是POST),点击它-->参数,得到下图,
通过观察表单数据,很明显,其中的“login”和“password”字段都是登录需要的,“login”对应的数据也正是我登录的账号名。所以到此可以初步确定:模拟此请求就可以登录github。
·操作步骤
步骤一:确定提交的URL,点击该请求-->消息头,如下图,得到URL,
步骤二:构造表单,先找到表单中的参数,去哪里找?一般都在请求的url里面,如何确定?重新进入到登录的页面,右键打开“查看元素”,在查看器中ctrl+F搜索字段,如下图,
可以看到能够在网页返回的内容直接找到模拟登录需要的参数及其值,“commit”参数也是可以找到的,未在图中显示,剩下的“login”,“password”字段是账号和密码。这样一来,就可以先get该url,通过正则(较方便)或其他方式匹配出这几个参数对应的值,构造出表单,然后通过post方式进行表单提交,最后通过get方式访问GitHub.com,在返回的内容中用正则匹配账号名来判断是否登录成功。
·代码地址
·后续
GitHub的模拟登录还是比较简单的,表单参数没有加密,且可以在请求的url中找到;所使用的模块是第三方的requests库,也推荐读者使用,它的功能和使用便捷性远超官方的urllib、urllib2。如果想继续深入模拟登录,推荐读者研究:CSDN、豆瓣、知乎PC端、新浪微博PC端。