自建磁力链搜索网站做老司机

简介 下载类的网站应该是大家经常用到的工具了,特别是一些 BT,PT 一类的网站,最近几年比较火的小型站点一般都是磁力搜索类的,但很多网站鱼龙混杂,广告横生(网站挂广告无可厚非,但是时不时弹出令人尴尬的内容就有点儿嗯。。) 最近看到网友 wenguonideshou 制作并修改的源码,叫 ZSKY,虽然貌似没给正式的命名,但是从 demo 来看,应该是 “纸上烤鱼” 的缩写,这个源码实际上是改自另一款很出名的源码 SSBC(手撕包菜),但手撕包菜的使用说明网上一直只是流传着一些坊间的版本,作者似乎也没有过多的在维护这个项目(2 年前的更新了),不过好在这次网友的修改版似乎更通俗易懂,其他不多说了,直接附上相关的说明(注:这类磁力搜索的网站实际上是利用 Python 爬去 DHT 网络中的信息,因此,基本不需要手动维护内容)

官方说明 在 ssbc 爬虫的基础上修复,现在可以 7*24 爬取的爬虫,修改了爬取策略,只入库音乐、电影、电子书。python 实现的磁力搜索网站,代码比较烂,请轻喷! 搜索排行榜、浏览排行榜、DMCA 投诉的功能未完成(其实是不想做) 和 ssbc 相比,没使用 sphinx 进行索引,而是用 redis 缓存访问页面,使用 jieba 分词,比 sphinx 的中文分词效果好。 模板在 templates 目录,模板引擎是 jinja2(非常易读),编写自己的专属模板非常方便,中文版文档 http://docs.jinkan.org/docs/jinja2/ 。 后台可以直接搜索、删除 DMCA 投诉的关键字,管理首页推荐关键字、用户搜索记录、查看每天爬取的资源数量、管理后台用户。 修改数据库密码后请修改 manage.py 里面的 mysql+pymysql://root: 后面的内容和 simdht_work.py 里面的 DB_PASS 实验环境:centos7 python2.7

新安装

Github 地址:https://github.com/wenguonideshou/zsky

複製代碼

yum -y install git git clone https://github.com/wenguonideshou/zsky.git cd zsky sh zsky.sh

原安装及环境配置

複製代碼

#下载源文件(到Github找最新版下载) tar zxvf zsky.tar.gz systemctl stop firewalld.service systemctl disable firewalld.service systemctl stop iptables.service systemctl disable iptables.service setenforce 0 sed -i s/\”SELINUX=enforcing\”/\”SELINUX=disabled\”/g  /etc/sysconfig/selinux #关闭selinux cat << EOF > /etc/sysctl.conf net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl =15 net.ipv4.tcp_retries2 = 5 net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_orphans = 32768 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_wmem = 8192 131072 16777216 net.ipv4.tcp_rmem = 32768 131072 16777216 net.ipv4.tcp_mem = 786432 1048576 1572864 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.ip_conntrack_max = 65536 net.ipv4.netfilter.ip_conntrack_max=65536 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 EOF /sbin/sysctl -p /etc/sysctl.conf /sbin/sysctl -w net.ipv4.route.flush=1 echo ulimit -HSn 65536 >> /etc/rc.local echo ulimit -HSn 65536 >>/root/.bash_profile ulimit -HSn 65536 #优化内核参数,优化打开文件数 cd zsky yum -y install wget gcc gcc-c++ python-devel mariadb mariadb-devel mariadb-server yum -y install epel-release python-pip redis pip install -r requirements.txt pip install redis systemctl start  mariadb.service systemctl enable mariadb.service systemctl start redis.service systemctl enable redis.service mysql -uroot  -e\”create database zsky default character set utf8mb4;\” mysql -uroot  -e\”set global interactive_timeout=31536000;set global wait_timeout=31536000;set global max_allowed_packet = 64*1024*1024;set global max_connections = 10000;\” python manage.py init_db #建表 python manage.py create_user #按照提示输入用户名、密码、邮箱 nohup gunicorn -k gevent –access-logfile zsky.log –error-logfile zsky_err.log  manage:app -b 0.0.0.0:80 –reload>/dev/zero 2>&1& #开启网站访问,访问日志是当前目录下zsky.log,错误日志是当前目录下zsky_err.log #如果不想要日志 就运行下面这条命令 #nohup gunicorn -k gevent manage:app -b 0.0.0.0:80 –reload>/dev/zero 2>&1& nohup python simdht_worker.py  2>&1& #开启爬虫并写日志,如果爬虫有问题请提交日志文件nohup.out给我 现在应该能访问http://IP 了,解析域名即可完成部署 后台地址http://IP/admin #开机自启动 chmod +x /etc/rc.d/rc.local echo \”systemctl start  mariadb.service\” >> /etc/rc.d/rc.local echo \”systemctl start  redis.service\” >> /etc/rc.d/rc.local echo \”cd /root/zsky\” >> /etc/rc.d/rc.local echo \”nohup python simdht_worker.py >/dev/zero 2>&1&\” >> /etc/rc.d/rc.local echo \”nohup gunicorn -k gevent manage:app -b 0.0.0.0:80 –reload>/dev/zero 2>&1&\” >> /etc/rc.d/rc.local

使用说明

Quote:

安装脚本执行过程中会提示输入绑定的域名、数据库密码、管理员用户名、密码、邮箱,输入后耐心等待即可访问 http://域名 后台地址 http://域名/admin 程序默认数据库密码123456 修改simdht_worker.py里的max_node_qsize的大小调节爬取速度(队列大小) 执行 python manage.py init_db    创建表/平滑升级表结构 执行 python manage.py create_user 创建管理员 执行 python manage.py changepassword 修改管理员密码 执行 systemctl start gunicorn  启动网站 执行 systemctl start mariadb  启动数据库 执行 systemctl status mariadb  查看数据库运行状态 执行 systemctl restart mariadb  重新启动数据库 执行 systemctl status gunicorn  查看gunicorn运行状态 执行 systemctl restart gunicorn  重新启动网站 执行 systemctl restart indexer  手动重新索引 执行 systemctl start searchd  开启搜索进程 执行 systemctl status searchd  查看搜索进程运行状态 执行 systemctl restart searchd  重新启动搜索进程 Q:如何修改站点名? A:修改manage.py里的常量sitename Q:如何修改地图里的域名? A:修改manage.py里的常量domain Q:如何实现远程主机反向代理本机的程序? A:修改本机的/etc/systemd/system/gunicorn.service其中的127.0.0.1:8000修改为0.0.0.0:8000然后执行systemctl daemon-reload,然后执行systemctl restart gunicorn,本机不开启nginx,远程主机开启nginx、配置反向代理、绑定域名即可,nginx的配置文件参考程序内的nginx.conf 。 Q:如何限制/提高爬取速度? A:修改simdht_worker.py里的max_node_qsize=后面的数字,越大爬取越快,越小爬取越慢 Q:如何修改数据库密码? A:执行mysqladmin -uroot -p password 123456!@#$%^ //将提示输入当前密码,123456!@#$%^是新密码 Q:修改数据库密码后怎么修改程序里的配置? A:修改manage.py里的mysql+pymysql://root:密码@127.0.0.1、修改manage.py里的DB_PASS、修改simdht_worker.py里的DB_PASS、修改sphinx.conf里的sql_pass Q:怎么确定爬虫是在正常运行? A:执行 ps -ef|grep -v grep|grep simdht 如果有结果说明爬虫正在运行 Q:更新manage.py/模板后怎么立即生效? A:执行 systemctl restart gunicorn 重启gunicorn Q:为什么首页统计的数据小于后台的数据? A:在数据量变大后,索引将占用CPU 100%,非常影响用户访问网站,为了最小程度减小此影响 默认设置为每天早上5点更新索引,你想现在更新爬取结果的话,手动执行索引 systemctl restart indexer ,需要注意的是,数据量越大 索引所耗费时间越长 Q:如何查看索引是否成功? A:执行 systemctl status indexer 可以看到索引记录 Q:觉得索引速度慢,如何加快? A:修改sphinx.conf里面的mem_limit = 512M ,根据你的主机的内存使用情况来修改,数值越大索引越快,最大可以设置为2048M Q:如何确定搜索进程是否正常运行 A:执行 systemctl status searchd ,如果是绿色的running说明搜索进程完全正常 Q:如何备份数据库? A:执行 mysqldump -uroot -p zsky>/root/zsky.sql 导出数据库 //将提示输入当前密码,数据库导出后存在/root/zsky.sql Q:数据库备份后,现在重新安装了程序,如何导入旧数据? A:执行 mysql -uroot -p zsky</root/zsky.sql    //假设你的旧数据库文件是/root/zsky.sql,将提示输入当前密码,输入后耐心等待 Q:如何迁移到新主机? A:备份数据库(方法见上面)→ 程序拷贝到新主机 → 安装程序 → 导入数据库(方法见上面)→ 重新索引 Q:我以前使用的搜片大师/手撕包菜,可以迁移过来吗? A:程序在开发之初就已经考虑到从这些程序迁移过来的问题,所以你不用担心,完全可以无缝迁移。 Q:网站经常收到版权投诉,有没有好的解决办法? A:除了删除投诉的影片数据外,你可以使用前端Nginx、后端gunicorn+爬虫+数据库+索引在不同主机上的模式,甚至多前端模式,这样 即使前端被主机商强行封机,也能保证后端数据的安全。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学自动化测试

python笔记23-unittest单元测试之mock

unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西。 它的主要功能是使...

22820
来自专栏Python研发

程序中的异步和同步

同步:   主机A发送数据的时候,主机B必须等待接收,处于阻塞状态,这就好比别人给你打电话,你必须当场听话,否则则【错失良机】。

11320
来自专栏北京马哥教育

10个方法助你轻松完成Linux系统恢复

在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

59850
来自专栏Seebug漏洞平台

DeDeCMS v5.7 密码修改漏洞分析

织梦内容管理系统(DedeCms)以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的...

49480
来自专栏java一日一条

JVM 开发者必看:傻瓜式编译 OpenJDK 7

LZ经过一个星期断断续续的研究,终于成功的搞定了JDK的成功编译与调试。尽管网络上的教程也有不少,包括源码中也有自带的编译步骤说明,但真正自己动手的话,还是会遇...

11720
来自专栏快乐八哥

搭建AngualarJS开发环境

1.选择Web浏览器 Chrome和Firefox浏览器 2.选择代码编辑器 Subline Text和Visual Studio Code 3.安装Web...

21660
来自专栏Albert陈凯

VMWare安装Linux操作系统CentOS

上篇文章我们介绍了如何在Windows操作系统中安装VMWare软件,并创建一个虚拟机,链接地址:http://www.jianshu.com/p/6b589e...

29540
来自专栏数据和云

Linux Bug: free cache 导致数据库实例crash

李真旭(Roger) ACOUG 核心专家,Oracle ACE,云和恩墨技术专家 编辑手记:linux 文件系统的cache分为2种:page cache和 ...

33860
来自专栏木子墨的前端日常

Nginx实践--安全升级

之前写了一些nginx的东西,这次继续,主要使用upstream针对proxy_pass转发做个处理 一般情况下我们在使用nginx反向代理的时候,都是如下配...

16030
来自专栏idba

主从替换之后的复制风暴

一套MySQL主-备-备-备数据库,其中的备库升级到主库之后,系统监控报警 Seconds_Behind_Master 瞬间为0,瞬间为数十万秒。第一感觉是遇...

21020

扫码关注云+社区

领取腾讯云代金券