python爬虫学习日记(2)--分析POST信息(MD5加密)

这次依然是以黎明大学的教务管理系统为例,因为之前我认为他的POST是很简单的,可是后来发现,他进行了加密,而且用其他的信息来加密另一个信息,所以我这次重新分析一遍,这里涉及到javascript,我都不会,但是通过百度都能查到,下面看我是怎么一步步挤牙膏的。

1.读表单

我们先来读表单的内容,选取可能被加密的

<input class="tx1" id="txt_pewerwedsdfsdff" 
style="WIDTH:134px;HEIGHT:20px" 
type="password" maxLength="25" 
name="txt_pewerwedsdfsdff" 
value="" onblur="chkpwd(this)" 
onkeyup="chkpwd(this)">


<input  class="tx1" id="txt_sdertfgsadscxcadsads" 
name="txt_sdertfgsadscxcadsads" 
style="WIDTH:134px;HEIGHT:20px" 
onblur="chkyzm(this)" onkeyup="chkyzm(this)" 
maxlength="4">


这里我们可以看到,有涉及到两个有关javascript的。


2.查资料

通过查阅资料:

onkeyup 事件会在键盘按键被松开时发生。(瞬间执行)

onblur 事件会在对象失去焦点时发生。(移出输入框点击随机位置后后执行)


我们跳到这里他涉及到的两个chkpwd()和chkyzm()


3.整理分析代码

原来的代码很乱,我给他整理了

function chkpwd(obj) {
        if(obj.value!='') {
        var s=md5(document.all.txt_asmcdefsddsd.value+md5(obj.value).substring(0,30).toUpperCase()+'11317').substring(0,30).toUpperCase();
        document.all.dsdsdsdsdxcxdfgfg.value=s;
        }
        else {
        document.all.dsdsdsdsdxcxdfgfg.value=obj.value;
        }     
    }


function chkyzm(obj) {
    if(obj.value!='') {
        var s=md5(md5(obj.value.toUpperCase()).substring(0,30).toUpperCase()+'11317').substring(0,30).toUpperCase();
        document.all.fgfggfdgtyuuyyuuckjg.value=s;
        }else {
            document.all.fgfggfdgtyuuyyuuckjg.value=obj.value.toUpperCase();
        }
    }


其实我看不懂这些代码,但是我可以查,我先从参数开始看起

把this传给obj,这里的this我们要知道他是谁

没有找到详细的回答,但我从下面的代码猜测

obj.value

这个this代替的就是传递过来的参数的那个对象本身,而这个value就是他的值。


我们再接着读代码,

toUpperCase() 方法用于把字符串转换为大写。

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

比如substring(0:30)就是取前30个字符。


这里就是繁琐的大写,取30位,还有一个就是MD5加密,用的是hash算法。

md5()这个函数可以在他导入的js看到

<script type="text/javascript" src="../js/md5.js"></script>

这里我们就不打开了,代码太长,而且MD5加密可以通过python的库函数加密。


4.尝试实现

...

你可能感兴趣的:(python爬虫学习日记(2)--分析POST信息(MD5加密))