“盗版”一个网络小说站点

目录
  1. 工作环境
  2. 准备工作
    1. 安装软件
    2. 获取小说地址
    3. 下载样式表和脚本文件
  3. 开始过滤
    1. index.php
    2. home.php
    3. article.php
  4. 盗版完成
  5. 程序下载

说盗版其实应该也不算是了,严谨的说是抓取一个网络小说的内容,过滤掉不需要的内容(比如广告和统计代码什么的),然后再把干净的内容呈现出来

这段时间在追一部叫《劫天运》的连载小说,原名《养鬼为祸》,好像因为河蟹问题所以改名了,最早是在黑岩网追的付费的,2毛多一章追了几十块钱,但是后来作者经常耍猴(作者每天凌晨更新,有时候一更都没有也不提前告知,n多次白等到凌晨1点)就放弃付费了,但是一直还在追,更换了无数的小说站,最后终于稳定在顶点中文网

这个站的盗版工作已经做完,所以这次就换了另外一个网站来做盗版演示,这个站长也是牛X居然域名就是yangguiweihuo.com

工作环境

我现在用的虚拟主机是php的,所以这次盗版工作也是用的php作为服务端语言

准备工作

安装软件

为了本地调试需要安装phpStudy,自行配置好phpStudy后在浏览器地址栏输入localhost并回车,如果正常会显示一个网页,之后在phpStudy建立的WWW目录下新建几个文件(夹)

1
2
3
4
5
├─ css
├─ js
│ index.php
│ home.php //小说首页
article.php //章节

获取小说地址

小说当然是在手机上看的,用pc浏览器需要模拟手机访问以获取手机版地址

  1. 猎豹浏览器(也可以是其它浏览器,几乎所有浏览器都支持开发功能)打开小说首页
  2. F12打开开发面板
  3. 启用模拟手机,选择手机型号
  4. 最后刷新一下页面就成了

图中从上到下依次包括了

  • 小说首页地址
  • 设备型号和屏幕尺寸
  • 小说首页布局展示以及后边需要去掉的广告

上面说的方法只适用于带有wap页面的站点,用上面的方法获取的网址会直接输出一个wap风格的页面,但是现在这个站虽然给出了wap风格的页面,但是网址不变,这样我们用代码获取小说内容的时候取得的还是pc样式的,无法在手机上阅读,怎么办呢?

其实在用浏览器正常访问这个站的时候,在最下边有一个移动版的链接,点它就好了,得到了http://www.yangguiweihuo.com/?am_force_theme_layout=mobile这个带参数的网址

下载样式表和脚本文件

在浏览器页面上按右键点查看源代码,会打开一个新的页面,在里面找到这几行

1
2
3
4
5
6
7
<link rel="stylesheet" href="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/style.css" type="text/css" media="screen" />
<script src="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/js/zepto.min.js"></script>
<script src="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/js/kfx.swipeslide.js"></script>
<script src="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/js/kfx.touchapp.js"></script>
<script src="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/js/kfx.template.js"></script>
<script src="http://www.yangguiweihuo.com/wp-content/themes/Novel-Mobile/js/kfx.scrolllist.js"></script>

href和src后边的链接是可以点的,直接点右键把它们保存到对应的文件夹里

额。。。。当然这一步也是可以忽略的,因为这个源文件里引用用的都是绝对地址,我们可以不用管它了。。。。。

开始过滤

准备工作做完之后就可以开始进入正题了

index.php

index.php是在安装phpStudy之后建立的文件,内容如下

1
2
3
<? php
include "home.php";
?>

home.php

home.php是用来过滤和显示小说首页的,首先是获取网页内容

1
2
3
4
5
6
7
<?php
$param = "?am_force_theme_layout=mobile";
$url = "http://yangguiweihuo.com/" . $param;
$output = file_get_contents($url);
echo $output;
?>

恩,浏览器测试正常,而且发现页面里根本没有广告(哈哈),不过在查看源代码里边还是可以找到下边的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script src='http://www.billionfocus.com/sina.php?id=1190'></script>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- 移动广告 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-2383141013716021"
data-ad-slot="3142463590"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

既然都写到这里了,那还是过滤一下吧(哈哈)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//过滤<script src='http://www.billionfocus.com/sina.php?id=1190'></script>
//因为这个代码有2行而且id后面的数字不一样,所以用到了正则表达式
$output = preg_replace("/<script src='http:\/\/www.billionfocus.com\/sina.php\?id=.*?'><\/script>/", "<!-- 替换广告 -->", $output);
//过滤<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
//这个代码有3行,直接替换即可
$output = str_replace("<script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>", "<!-- 替换广告 -->", $output);
//过滤<ins></ins>之间的内容
//这是一个多行的代码块出现了3次,要用正则表达式替换
$output = preg_replace("/<ins[\s\S]*?<\/ins>/", "<!-- 替换广告 -->", $output);
//过滤<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
//出现3次而且是多行代码块,还是用正则表达式
$output = preg_replace("/<script>\n\(adsbygoogle.*\n<\/script>/", "<!-- 替换广告 -->", $output);

继续看网页源代码,最下边有个footer标签,里边有统计代码和桌面版的链接,不如也去掉好了

1
2
3
//过滤<footer></footer>之间的内容
//多行代码块还是要用正则表达式,不过还是要保留一些内容的
$output = preg_replace("/<footer[\s\S]*?<\/footer>/", "<!-- 替换统计 -->\n<footer class='ui-bottom-bar'><p>Copyright © <a href='./'>劫天运</a></p></footer>", $output);

再继续看源代码,最上边header后边还有菜单,我也用不上,也去掉吧

1
2
3
4
//菜单分两部分,菜单按钮和菜单项
//菜单按钮直接替换掉,菜单项分多行需要用正则表达式
$output = str_replace("<div class=\"ui-menu-trigger js-menubtn-top\"></div>", "<!-- 替换菜单按钮 -->", $output);
$output = preg_replace("/<div class=\"ui-cateandsearch js-category-search[\s\S]*?<\/div><br \/>/", "<!-- 替换菜单项 --><br />", $output);

菜单再网上还有一个主页按钮,地址是人家的,也替换一下

1
2
//替换主页链接
$output = str_replace("<a href=\"http://www.yangguiweihuo.com\" class=\"ui-gohomepage\"></a>", "<!-- 替换主页链接 -->\n<a href='./' class='ui-gohomepage'></a>", $output);

页面修整告一段落,下边就是改小说内容的链接和翻页链接了,先把最下边的翻页链接http://www.yangguiweihuo.com/page/2?am_force_theme_layout=mobile改为我们自己的home.php

1
2
3
4
5
6
//替换翻页链接为本页面,用到正则表达式
$output = preg_replace("/http:\/\/www.yangguiweihuo.com\/page\//", "./home.php?page=", $output);
//去掉多余的参数
$output = str_replace("?am_force_theme_layout=mobile", "", $output);
//替换上一页和第一页链接
$output = str_replace("<a href='http://www.yangguiweihuo.com/' class=", "<a href='./' class=", $output);

上面把翻页替换为home.php了,那么home.php还要再修改一下以接收参数

1
2
3
4
5
6
7
8
if (!isset($_GET["page"])) {
$page = "";
} else {
$page = "page/" . $_GET["page"];
}
$param = "?am_force_theme_layout=mobile";
$url = "http://www.yangguiweihuo.com/" .$page . $param;

还没完事。。。。。主页中的文章链接也要重定向到article.php里边去

1
2
3
//替换文章链接到自己的article.php里边
//直接替换即可
$output = str_replace("<a href=\"http://www.yangguiweihuo.com/", "<a href=\"./article.php?id=", $output);

至此,小说首页分析和过滤就结束了,下面开始搞文章正文内容

article.php

和home.php的流程一样,首先是获取文章内容

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if (!isset($_GET["id"])) {
header ('location: ./');
} else {
$id = $_GET["id"];
}
$param = "?am_force_theme_layout=mobile";
$url = "http://yangguiweihuo.com/" . $id . $param;
$output = file_get_contents($url);
echo $output;
?>

测试文章显示没问题后,点右键选查看源文件,看看有没有广告之类的东西吧

呵呵,好像和主页是一样的,那我就先粘为敬了(哈哈哈)

恩。。。。有两个不同的地方,之前过滤菜单的时候把它上一层也过滤掉了,但是在文章阅读页面有几个控制按钮需要保留,所以替换菜单项那里需要改一下

1
2
3
4
//菜单分两部分,菜单按钮和菜单项
//菜单按钮直接替换掉,菜单项分多行需要用正则表达式
$output = str_replace("<div class=\"ui-menu-trigger js-menubtn-top\"></div>", "<!-- 替换菜单按钮 -->", $output);
$output = preg_replace("/<menu class=\"ui-categorys js-category-panel js-hidden[\s\S]*?<\/menu>/", "<!-- 替换菜单项 -->", $output);

还有一个地方,文章阅读页面没有翻页功能,所以替换翻页那部分也不要粘了

再来看看还有什么不一样的地方吧

恩,最显眼的也就是这些乱78遭的东西了,一个一个去掉吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//去除底部文字广告
//多行文字要用正则表达式
$output = preg_replace("/<div style=\"color:red[\s\S]*?<\/div>/", "<!-- 替换文字广告 -->", $output);
//去除畅言评论模块代码
$output = str_replace("<a name=\"comments\"></a>", "", $output);
$output = preg_replace("/<div id=\"SOHUCS[\s\S]*?<\/div>/", "<!-- 替换畅言评论 -->", $output);
$output = preg_replace("/<script>\(function\(\)[\s\S]*?<\/script>/", "<!-- 替换畅言评论代码 -->", $output);
$output = preg_replace("/<div id=\"ds-ssr[\s\S]*?<\/div>/", "<!-- 替换畅言评论列表 -->", $output);
//去除点赞按钮
//多行代码块要用正则表达式
$output = preg_replace("/<div align=\"center[\s\S]*?<\/div><\/div>/", "<!-- 替换点赞按钮 -->", $output);
//去除点赞代码
$output = str_replace("<script id=\"bdlike_shell\"></script>", "", $output);
$output = preg_replace("/<script>[\s\S]*?<\/script>/", "<!-- 替换点赞代码 -->", $output);

盗版完成

到这一步,过滤工作算是全部完成了,效果如下

最后只要把所有php文件上传到虚拟主机就可以了,盗版工作到此结束

程序下载


欢迎转载,转载时请注明出处并保持转载后文章内容的完整性