Python

Python爬虫之找出网页中加密内容的(入门篇)

字号+ 作者:wd0g 来源:转载 2016-12-17 09:01 我要评论( )

从哪儿说起呢 很多时候我们都需要去爬取一些网页上的内容,如果运气好是明文内容,那就相对简单了 如果是加密后的内容呢? 相信很多人都遇到过这种情况,如果你还没解......

从哪儿说起呢

很多时候我们都需要去爬取一些网页上的内容,如果运气好是明文内容,那就相对简单了

如果是加密后的内容呢?

相信很多人都遇到过这种情况,如果你还没解决的话,快看看这文章吧

假的开始

目标地址:http://dir.scmor.com/google/

需要内容:谷歌镜像地址

Google镜像

我需要的内容,就是标记处的URL链接

真的开始

一共八个网址,其中第一个的地址是:

http://www.acgn.ren/

  1. 右键->查看源文件
  2. Ctrl + F 搜索第一步中的域名

通过上面的两步小操作,并没有在源文件中搜索到域名

这时候,我想到下面两个可能:

  1. 域名通过ajax获取
  2. 域名加密过

打开开发者工具,来到netword面板,开启拦截后,F5刷新下网页

下面列表中会出现当前网页发出的每一个请求,如果域名是通过Ajax获取的

那么域名肯定会出现在下面请求中的返回内容中

python爬虫

我要做的就是一个一个点击查看,看看response里面是否包含有我想要的内容,如果有,那么数据就是通过Ajax来获取的

 

如果没有找到,说明域名可能是进行了加密(除了我上面说到的两种可能,不排除还有其他的可能)

文章中的这个案例,实际上就是将域名进行了加密

所以我们需要的内容是加密的内容

网站中的A标签的代码

可以看到,在点击链接的时候,会访问visit方法,我在网站引入的JS中找到了visit方法

我将上面的JS代码进行了注释,可以看到第三行中有个Gword变量,但是在当前函数的代码块中并没有这个变量

所以这个变量值肯定是在其他地方保存着,这样的话又可以用到第三步中的那样,一个一个请求中,查看response中是否包含需要的字符串

按照这样的操作,我在第一个请求中就找到了Gword变量,该变量就存在与网页源代码中

可以看到第五行Gword的值就是一个邮箱noreply@scmor.com

如果Gword的值不等于空,就进行下面的操作

最终URL的值就是A标签点击跳转的链接,再看下面的函数

就是解密的函数

strdecode函数:

上面的函数的解密大概逻辑

  1. 循环(string变量长度)次
    1. k = i % len(k = i 余 len)
    2. c = (string变量的第i位字符的ascii码) ^ (key变量的第k位字符的ascii码)
    3. code = ascii码到字符(c)
  2. base64解码code变量,并返回

先看看这函数到底能不能解密吧

F12->Console:

可以看到还真解密出来了~~~

这样基本上就找到了想要的内容了,但是…

这玩意得运行JS才能解密啊,万一我是PHP或Py咋办…

其实我觉得把js解密函数转为Python或者其他语言来写,就OK了

将JS代码转换为Python

JS解密函数

上文中已经把解密的逻辑写出来了,用Python照样写就OK了

试试看能不能解密,参数=DycgVRMoFjY/UAlcFldWBzRcCwcpHiYVIhpbUA==

这样代码就解处来了

反正无聊在写个加密的

大概逻辑是这样:

a ^ b = c,已知c和b的值,求a? a = c ^ b


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Python/438.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 记录一次简单的python爬虫经历

    记录一次简单的python爬虫经历

    2016-12-28 09:30

网友点评
暂时未开启评论功能~