这是 http://zlal32teyptf4tvi.onion 隐藏服务的源代码副本,实现了一个 Tor 隐藏服务爬虫/蜘蛛及网站。
本软件根据 GNU Affero GPL 3 许可证提供。这意味着如果你将该软件作为公开可访问的网络化软件的一部分部署,你必须提供源代码(以及任何修改)。
来自 GNU 网站:
GNU Affero 通用公共许可证是普通 GNU GPL 版本 3 的修改版本。它增加了一项要求:如果你在服务器上运行修改后的程序并允许其他用户与之通信,那么你的服务器还必须允许他们下载对应于正在运行的修改版本的源代码。
pip install -r requirements.txt
从 schema.sql 创建 mysql 数据库
编辑 etc/database 文件以配置你的数据库
编辑 etc/proxy 文件以配置你的 TOR
script/push.sh someoniondirectory.onion
script/push.sh anotheroniondirectory.onion
编辑 etc/uwsgi_only 并将 BASEDIR 设置为 torscraper 的安装位置(例如 /home/user/torscraper)
运行:
init/scraper_service.sh # 开始爬取
init/isup_service.sh # 保持站点状态最新
torscraper 带有可选的 elasticsearch 功能(默认启用)。编辑 etc/elasticsearch 并设置变量,或设置 ELASTICSEARCH_ENABLED=false 以禁用。在配置后运行 scripts/elasticsearch_migrate.sh 执行初始设置。
如果禁用了 elasticsearch,将不会有全文搜索,但爬取和发现新站点仍将工作。
# 从各种来源收割洋葱站点
1 18 * * * /home/scraper/torscraper/scripts/harvest.sh
# 获取新站点的 SSH 指纹
1 4,16 * * * /home/scraper/torscraper/scripts/update_fingerprints.sh
# 从 /r/darknetmarkets 超级列表标记站点为真实/虚假
1 9 * * 1 /home/scraper/torscraper/scripts/get_valid.sh
# 从 pastebin 抓取洋葱站点(需要付费账户/IP白名单)
*/5 * * * * /home/scraper/torscraper/scripts/pastebin.sh
# 端口扫描新洋葱站点
1 */6 * * * /home/scraper/torscraper/scripts/portscan_up.sh
# 抓取 stronghold paste
32 */2 * * * /home/scraper/torscraper/scripts/stronghold_paste_rip.sh
# 检测克隆站点
16 3 * * * /home/scraper/torscraper/scripts/detect_clones.sh
Fresh Onions 运行在两台服务器上:一台前端主机运行数据库和隐藏服务网站,一台后端主机运行爬虫。读者可能最感兴趣的是后端的设置。TOR 作为客户端完全是单线程的。我知道!现在是 2017 年,除了完全没有飞行汽车之外,TOR 还在单线程中运行。这意味着如果你尝试在单个 TOR 实例上运行爬虫,你会很快发现你的 CPU 使用率达到 100%。
这个问题的解决方案是运行多个 TOR 实例,并通过某种前端连接到它们,该前端将对你的请求进行轮询。Fresh Onions 爬虫运行八个 Tor 实例。
Debian(以及 Ubuntu)附带了一个有用的程序 "tor-instance-create",用于快速创建多个 TOR 实例。我使用 Squid 作为前端代理,但不幸的是它不能直接连接到 SOCKS,所以我使用 "privoxy" 作为中间代理。你需要为每个 TOR 实例创建一个 privoxy 实例。"scripts/create_privoxy.sh" 中有一个脚本可以帮助在 Debian 系统上创建 privoxy 实例。它还有助于将 /etc/privoxy/default.filter 替换为空文件,通过删除不必要的正则表达式来降低 CPU 负载。
此外,资源 https://www.howtoforge.com/ultimate-security-proxy-with-tor 可能对设置 squid 有用。如果你只是进行爬取而不关心匿名性,我还建议以 tor2web 模式运行 TOR(需要重新编译)以获得更快的速度。