php批量扒取网站内容

最近发现了一个“小气”的学习站点。网站内容竟然不让复制,这样搞,怎么让我们考试的时候弄小抄,难不成要一个字一个字的去打不成。所幸的是咱是搞技术的,这点问题还是难不倒的,你不让复制刚好,这下我还懒得麻烦呢。直接搞个脚本把这一课的内容全扒取下来看岂不更方便。

说搞就搞,先是看源代码。不过网页禁止了右键,点右键有如下提示:

<a href="https://www.361way.com/wp-content/uploads/2012/06/pa1.png"><img src="https://www.361way.com/wp-content/uploads/2012/06/pa1.png" alt="" title="pa1" width="361" height="116" class="alignleft size-full wp-image-1493" /></a>

这个倒不难,查看网页源代码的方法太多了,不知道的可以网上找找吧。查看到了,源代码,发现没找页面中的内容未在源代码中显示。接着拿出httpwatch抓包分析,在其中的另外一个链接里找到页面源代码,不过源代码是加密过的。如下:

<a href="https://www.361way.com/wp-content/uploads/2012/06/pa2.jpg"><img src="https://www.361way.com/wp-content/uploads/2012/06/pa2.jpg" alt="" title="pa2" width="748" height="69" class="alignleft size-full wp-image-1494" /></a>

不过这个加密有点菜,里面已经明明白的写着是base64加密了。这个解码并不难,linux系统自带的base64工具就能完成:

[root@web20 php]# base64 --help
Usage: base64 [OPTION] [FILE]
Base64 encode or decode FILE, or standard input, to standard output.
  -w, --wrap=COLS       Wrap encoded lines after COLS character (default 76).
                        Use 0 to disable line wrapping.
  -d, --decode          Decode data.
  -i, --ignore-garbage  When decoding, ignore non-alphabet characters.
      --help            Display this help and exit.
      --version         Output version information and exit.
如果[文件]缺省,或者[文件]为 - ,则读取标准输入。
The data are encoded as described for the base64 alphabet in RFC 3548.
Decoding require compliant input by default, use --ignore-garbage to
attempt to recover from non-alphabet characters (such as newlines) in
the encoded stream.

base64 -d 文件名就行了。不过解码后发现,解出的结果是url化的。得到的结果如下:

%20%20%5B%E8%AF%86%E8%AE%B0%5D%E4%BC%9A%E8%AE%A1%E7%9A%84%E6%B6%B5%E4%B9%89%E6%98%AF%E4%BB%80%E4%B9%88%EF%20%20

看到这个结果是不是又犯难了,其时这个时候应该感到高兴才是。因为结果已经出来一半了。这个得出的结果不正是和在url里进行汉字搜索得到的的URL结果一样吗?

<br />

如:我在hao123的百度搜索里找”测试”,得到的页面url是

http://www.baidu.com/s?word=%B2%E2%CA%D4&tn=sitehao123
<br />

测试两个汉字在url中就变成了%B2%E2%CA%D4 ,知道原理了。解码还不是很简单。php中有个函数urldecode就是干这个用的。下面列出来我全部的url代码:

<br />

此外为了我出于对那个站点的知识产权的保护,把他的URL给换成了http://www.XXX.com/test.php 。(毕竟人家也是一点点做上去的也不容易。)刚好我服务器上也有php环境,直接运行php test.php。结果非常喜人,一会儿功夫,这一课目的内容全出来了。

ok,放到word里再重新编辑下,打印出来看,多爽!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注