千家信息网

用Python模拟网站中对JavaScript加密的方法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"用Python模拟网站中对JavaScript加密的方法",在日常操作中,相信很多人在用Python模拟网站中对JavaScript加密的方法问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2026年10月31日用Python模拟网站中对JavaScript加密的方法

这篇文章主要介绍"用Python模拟网站中对JavaScript加密的方法",在日常操作中,相信很多人在用Python模拟网站中对JavaScript加密的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"用Python模拟网站中对JavaScript加密的方法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

第一种是改写JavaScript的代码

这没什么好说的,不过只适用于比较小而且不复杂的JavaScript代码片段。比如人人网上发站内信的页面有这样的一个隐藏post数据:

在页面上biz的值为0,但是post的时候就会变成类似于941_683291223928232的字串,仔细看一下页面的源代码,就会发现这段验证的加密字串是通过一段JavaScript的代码生成的:

这其实类似一段小型的验证加密,它先随机生产一段字串,复制给随机产生的一个变量名,再随机生成一段运算符,复制给另一个随机生成的变量名,然后对这两个变量进行一系列操作和运算,生成一个类似于941_683291223928232的字串。每次刷新页面这段代码中产生的字串和变量名都是不一样的,但是仔细研究这段代码,算法都是相同的,只要得到字串和运算符串,就可以生成这串验证密钥了。

所以将这段代码简单的改写成python代码,问题得到解决,在python模拟网站的JavaScript加密过程下面代码中code就是提取出来的上述JavaScript代码中的mREOQQ,operator代表VKMHX,而xn则代表ab的初始值,***得到的xn_biz就是我们最终需要的验证密钥了。

def __genBizCode(code, operator, xn):  rXHU = unicode( code )  yAMKEN = operator VCHEN, yEEJ, eLKKIH = (0, 0, ");   KFNQH = int( len(yAMKEN)/2 );  while VCHEN < len(rXHU):  yEEJ = ord(rXHU[VCHEN])  VCHEN += 1  index = yEEJ % len(yAMKEN)  dDWE = ord( yAMKEN[index] )  dDWE = chr(dDWE)  if dDWE==’L':  dDWE = ‘<<’  if dDWE==’~':  eLKKIH += str( ~yEEJ*(-1) )  else:  reg = ‘%d%s%d’ % ( yEEJ, dDWE, KFNQH)  eLKKIH += str( int( eval(reg) ) )  xnxn_biz = xn + ‘_’  xn_biz += eLKKIH  return xn_biz

这种方法没有依赖性,但是使用的范围较窄,一是要求算法简单才能改写,二是要求算法固定,如果每次刷新页面算法都不一样,这种方法就不使用了。下面会谈到一种通用性的方法。

第二种是在python中运行js代码由于QZone和QQ校友登陆的时候,post的密码都进行了加密,搜索了一下,发现很多人都研究过这个东东。腾讯将用户的密码和验证码一起,通过一些js代码进行加密,生成一个32为的密钥最终post到服务器上。

对于这个加密算法,网上大部分流传的说法是,先将用户密码进行3次md5的加密,转成大写的32位字符串,再将验证转换成大写,与前面的32位md5大写字符串相加,得到一个36位的字符串,***对这个36位的字串进行md5加密并转换成大写字串,得到最终post的密钥。

网上很多人说用标准的md5加密,但是我用python的hashlib里的md5进行上述的加密,得到的结果却与标准结果不同,于是只能寻求其他办法。后来在Google的时候搜到了在python中利用windows的插件Windows ScriptControl运行其他脚本语言的方法,不仅适用js,还可以运行vbs等。

首先需要安装Windows ScriptControl插件,可以去微软的官网上下载。其次还需要安装python的win32库,然后就可以简单的如下执行:

  1. import win32com.client

  2. def readJsFile(filename):

  3. fp = file( filename, ‘r’ )

  4. lines = "

  5. for line in fp:

  6. lines += line

  7. return lines

  8. def driveJsCode(code, func, paras=None):

  9. js = win32com.client.Dispatch
    (’MSScriptControl.ScriptControl’)

  10. js.Language = ‘JavaScript’

  11. js.AllowUI = False

  12. js.AddCode( code )

  13. if paras:

  14. return js.Run(func, paras[0], paras[1])

  15. else:

  16. return js.Run(func)

  17. if __name__ == ‘__main__’:

  18. code = readJsFile( ‘comm.js’ )

  19. p = driveJsCode
    ( code, ‘myPreProcess’, [password, verfcode] )

  20. print ‘The decoded code is %s’ % p

这种方法通用性强,而且即使服务器改变算法,依然可以得到正确的加密验证码。

到此,关于"用Python模拟网站中对JavaScript加密的方法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

加密 代码 方法 验证 网站 算法 生成 页面 变量 密钥 学习 大写 字符 字符串 密码 时候 运算 运行 代表 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 A股互联网金融科技公司 互联网金融与金融科技 期待互联网科技 上海万想互联网科技 互联网科技生活的内容 恒生科技互联网指数分析 安控科技rtu产品工业互联网 互联网为啥属于高科技 互联网科技公司有风险吗 互联网与医疗科技 哈尔滨屹滨互联网科技有限公司 广州新华互联网科技学校电竞方面 互联网数据科技专业 伊宁互联网科技做什么的 互联网科技快讯热点 广东鹅鹅鹅互联网科技有限公司 科技互联网专业工作会议发言稿 恒生科技互联网指数十大成分股 如何强化互联网金融科技 互联网科技公司税收优惠 杭州互联网科技公司 安徽鑫晟辉互联网科技 四个字互联网科技公司取名 富国互联网科技创新基金 996高科技互联网公司 如何创新互联网科技 江苏互联网智能科技软件 卡尔迅互联网科技有限公司 北京品多多互联网科技有限公司
0