Python模拟网页中javascript加密与验证的相关处理

开发 后端
如果一个网站的网络爬虫做的很好的话,其中的秘密主要是因为它会对用户的输入做一些加密处理后再post到服务器上去,做爬虫,需要模拟 这些加密的处理。

在做网络爬虫的过程中你是否一些在这方面做的很好的网站,你向知道他是通过哪些相关的操作做出这么好的网站,以下就是文章的相关内容的具体介绍,希望你浏览完下面的内容会有所收获。Python模拟网页的javascript加密验证处理

在做网络爬虫中很多人都会遇到,做得比较好的一些企业级网站,对于登陆或者其他操作都会对用户的输入做一些加密处理后再post到服务器上去,而加密这部分几乎都是通过JavaScript来完成的,所以要做爬虫,需要模拟 这些加密的处理。

我比较喜欢Python来做爬虫,urllib/urllib2库用起来真的是很方便,所以很多时候遇到需要在python中来模拟网站的JavaScript加密过程。暂时总结起来有两种方法:

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

 

  1. <input type="hidden" name="biz" value=0 id="xn_biz"/> 


在页面上biz的值为0,但是post的时候就会变成类似于941_683291223928232的字串,仔细看一下页面的源代码,就会发现这段验证的加密字串是通过一段JavaScript的代码生成的:这其实类似一段小型的验证加密,Python模拟网页的javascript加密验证处理 ,它先随机生产一段字

  1. <script>var mREOQQ=’A`ZDu^`’;var VKMHX=’
    ^&+*L/~’;var 
    uCHKAU=0;var rTIU;var wCJS=”;var
     
    yAYH=Math.floor(VKMHX.length/2);while
    (uCHKAU
    <mREOQQ.length){rTIU=mREOQQ.
    charCodeAt(uCHKAU++);var 
    aYDG=VKMHX.
    charCodeAt(rTIU%VKMHX.length);
    aYDG=String.
    fromCharCode(aYDG);if(
    aYDG==’L')aYDG=’<<
    ;if(
    aYDG==’~')wCJS+=~rTIU*(-1);else{wCJS+=Math.
    floor(eval(rTIU+aYDG+yAYH));}}var 
    ab=941;ab+="_";
    ab+=wCJS; document.getElementById("xn_biz")
    .value=ab;</script>  

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

所以将这段代码简单的改写成python代码,问题得到解决,下面代码中code就是提取出来的上述JavaScript代码中的mREOQQ,operator代表VKMHX,而xn则代表ab的初始值,***得到的xn_biz就是我们最终需要的验证密钥了。以上的文章就是对Python模拟网页的实际应用的相关介绍。

 【编辑推荐】

  1. Python安装中对配置环境变量实际操作的方法
  2. Python手工加载Django的实际操作的四部分详解
  3. Python Docutils工具集的相关代码的示例
  4. Python包管理中的简单化处理工具的介绍
  5. Python字符串与转义序列的相关内容的介绍
责任编辑:佚名 来源: 互联网
相关推荐

2010-03-25 09:08:50

Python模拟网站

2015-10-13 10:41:34

Open vSwith模拟网关子网

2017-08-28 15:21:29

异步处理回调函数异步编程

2016-11-16 15:23:09

2021-07-16 14:24:08

网络犯罪加密货币网络攻击

2009-06-10 22:06:29

JavaScript面向对象

2022-02-17 13:04:57

网络验证运营商

2010-10-08 10:03:52

JavaScript图像

2014-08-08 09:52:26

谷歌

2010-03-04 11:22:59

Python抓取网页图

2023-04-13 15:53:00

5G车载通信模拟网测试

2009-03-11 15:30:05

evalwithJavascript

2014-07-07 10:04:32

2018-11-21 12:27:21

JavaScript 货币值区域

2023-11-14 14:38:53

2014-07-10 11:34:05

2010-03-09 09:23:30

Python中文

2013-12-04 14:19:40

JavaScript代码重用

2021-08-02 12:29:15

Python爬虫网站

2011-06-16 14:23:43

JavaScript空事件处理程序
点赞
收藏

51CTO技术栈公众号