
1.1 登陆VPS:用SSH连上你的日本免费VPS,例如:ssh user@your.vps.ip。保存私钥,不要用root直接做日常操作。
1.2 系统确认:建议使用Ubuntu/Debian。执行:lsb_release -a && uname -m,记录系统版本以选包。
1.3 域名与DNS:准备一个域名并在DNS面板添加A记录指向VPS公网IP,生效后再申请证书。
1.4 合规前提:只镜像你有权访问或许可的站点(自有站点、开源或公有域)。爬虫测试请遵守robots.txt与目标网站服务条款。
2.1 更新与安装:sudo apt update && sudo apt upgrade -y;安装常用包:sudo apt install -y nginx certbot python3-pip git ufw htop wget curl。
2.2 防火墙:sudo ufw allow OpenSSH && sudo ufw allow 'Nginx Full' && sudo ufw enable。确认端口80/443开放。
2.3 非root用户与sudo:创建普通用户并加入sudo组:adduser deploy && usermod -aG sudo deploy。
2.4 交换分区(可选):若内存小,建立swap:sudo fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile,并写入/etc/fstab。
3.1 选择工具:静态镜像推荐wget或HTTrack。HTTrack界面友好,wget轻巧。先安装:sudo apt install -y httrack。
3.2 使用wget镜像示例:sudo mkdir -p /var/www/mirror && cd /var/www/mirror;sudo wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.com -P /var/www/mirror。注意替换为可镜像站点。
3.3 使用HTTrack示例:httrack "https://example.com" -O /var/www/mirror "+*.example.com/*" -v --depth=3。参数depth按需调整以防抓取过深。
3.4 自动更新:写一个简单脚本update_mirror.sh,内含httrack/wget命令并放到cron定时执行(如每天凌晨)。
4.1 新建站点目录:sudo chown -R www-data:www-data /var/www/mirror。
4.2 Nginx配置:在 /etc/nginx/sites-available/ 写server块,root 指向 /var/www/mirror,index index.html。示例:server_name your.domain; root /var/www/mirror; try_files $uri $uri/ /index.html;。然后 sudo ln -s … && sudo nginx -t && sudo systemctl reload nginx。
4.3 HTTPS:使用Certbot自动申请证书:sudo certbot --nginx -d your.domain,按提示完成并启用自动续期。
5.1 检查robots.txt:先请求 https://target/robots.txt 并遵守其中Disallow规则。
5.2 速率限制:镜像或爬虫时设置合理延迟,wget可用--wait=5,Scrapy设置DOWNLOAD_DELAY=2。避免对方服务器过载。
5.3 请求头与身份声明:设置User-Agent包含联系邮箱或说明用途,便于管理员联系。示例:MyMirrorBot/1.0 (+mailto:you@example.com)。
5.4 避免绕过限制:不要尝试避开IP封禁、验证码或登录验证,这可能违法或违反服务条款。
6.1 环境准备:sudo apt install -y python3-venv && python3 -m venv ~/scrapyenv && source ~/scrapyenv/bin/activate && pip install --upgrade pip scrapy requests beautifulsoup4。
6.2 创建项目:scrapy startproject mycrawler && cd mycrawler && scrapy genspider example example.com。修改spider,示例核心代码放在spiders/example.py(见下pre示例)。
6.3 示例spider(简化,遵守robots):
import scrapy
class ExampleSpider(scrapy.Spider):
name = "example"
allowed_domains = ["example.com"]
start_urls = ["https://example.com/"]
custom_settings = {"DOWNLOAD_DELAY": 2, "USER_AGENT": "MyTestBot/1.0 (+mailto:you@example.com)"}
def parse(self, response):
yield {"url": response.url, "title": response.xpath('//title/text()').get()}
for href in response.css('a::attr(href)').getall():
yield response.follow(href, self.parse)
6.4 运行测试:scrapy crawl example -o output.json。观察输出并根据需要调低并发或增加过滤。
7.1 systemd服务:建立 /etc/systemd/system/mycrawler.service 文件,内容示例:
[Unit] Description=My Scrapy Crawler After=network.target [Service] User=deploy WorkingDirectory=/home/deploy/mycrawler Environment="PATH=/home/deploy/scrapyenv/bin" ExecStart=/home/deploy/scrapyenv/bin/scrapy crawl example Restart=on-failure [Install] WantedBy=multi-user.target7.2 启动与启用:sudo systemctl daemon-reload && sudo systemctl start mycrawler && sudo systemctl enable mycrawler。
问:如果镜像后的页面样式丢失或链接错误,我该怎么修复?
答:首先检查wget/httrack是否使用了--convert-links与--page-requisites参数,确保静态资源(CSS/JS/图片)被抓取并放在相对路径。Nginx的try_files要正确配置,若资源引用第三方CDN且被屏蔽,可手动下载并改写HTML引用,或者使用rewrite脚本批量替换路径。同时查看nginx错误日志/浏览器控制台定位404资源路径。
问:VPS资源有限,如何防止爬虫或镜像占满带宽与CPU?
答:在爬虫配置中降低并发(Scrapy的CONCURRENT_REQUESTS、DOWNLOAD_DELAY),对wget/httrack设置--wait;使用nice/ionice限制进程优先级;为Nginx开启gzip压缩与缓存静态文件,配置limit_conn和limit_req模块限制并发连接;必要时在系统层面设置tc流量控制或使用外部CDN分流。
问:镜像与爬虫测试会不会侵犯版权或触犯法律?
答:可能会。请仅镜像你有权复制的内容或明确允许公开抓取的站点;遵守目标站的robots.txt和服务条款;不要抓取需登录/付费内容或绕过访问控制;在企业或大量抓取前最好获得书面许可并咨询法律顾问。确保VPS账户安全,密钥、凭证不得泄露,定期更新与备份。