最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php利用file_get_contents批量采集网站内容
时间:2022-06-24 15:16:14 编辑:袖梨 来源:一聚教程网
最近发现了一个“小气”的学习站点。网站内容竟然不让复制,这样搞,怎么让我们考试的时候弄小抄,难不成要一个字一个字的去打不成。所幸的是咱是搞技术的,这点问题还是难不倒的,你不让复制刚好,这下我还懒得麻烦呢。直接搞个脚本把这一课的内容全扒取下来看岂不更方便。
说搞就搞,先是看源代码。不过网页禁止了右键,点右键有如下提示:
这个倒不难,查看网页源代码的方法太多了,不知道的可以网上找找吧。查看到了,源代码,发现没找页面中的内容未在源代码中显示。接着拿出httpwatch抓包分析,在其中的另外一个链接里找到页面源代码,不过源代码是加密过的。如下:
不过这个加密有点菜,里面已经明明白的写着是base64加密了。这个解码并不难,linux系统自带的base64工具就能完成:
[root@web20 php]# base64 --helpUsage: 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结果一样吗?
如:我在hao123的百度搜索里找"测试",得到的页面url是
http://www.baidu.com/s?word=%B2%E2%CA%D4&tn=sitehao123
测试两个汉字在url中就变成了%B2%E2%CA%D4 ,知道原理了。解码还不是很简单。php中有个函数urldecode就是干这个用的。下面列出来我全部的url代码:
php for ($i=18291; $i<=18788 ;$i++ ){ $content = file_get_contents("http://www.XXX.com/test.php?wiki_id=".$i);//echo $content; $spwt1=explode("问题:",$content); $spwt2=explode('));<',$spwt1[1]); $spdn=explode("答案:",$spwt2[1]);//echo $spwt2[0];//echo $spdn[1]; preg_match('/base64decode("(.*?)"/',$spwt2[0],$matchesw); $wen=urldecode(base64_decode($matchesw[1])); echo $wen; echo "n"; echo "n"; preg_match('/base64decode("(.*?)"/',$spdn[1],$matchesd); $da=urldecode(base64_decode($matchesd[1])); echo $da;}?>
此外为了我出于对那个站点的知识产权的保护,把他的URL给换成了http://www.XXX.com/test.php 。(毕竟人家也是一点点做上去的也不容易。)刚好我服务器上也有php环境,直接运行php test.php。结果非常喜人,一会儿功夫,这一课目的内容全出来了。
相关文章
- 人们熟悉的寄居蟹属于以下哪种分类 神奇海洋11月21日答案 11-21
- 第五人格11.22共研服有什么更新 11月22日共研服更新内容介绍 11-21
- 原神恰斯卡怎么培养 11-21
- 无期迷途四星装束是谁 11-21
- 王者荣耀帝丹高中校服怎么获得 11-21
- 光遇姆明季后续版本怎么玩 11-21