保护scrapyd的API和Web界面

时间:2016-06-29 08:47:02

标签: python scrapy scrapy-spider scrapyd

我已设置Scrapyd以更好的方式管理Scrapy蜘蛛,并且它做得非常好。我只是怀疑如何保护它,因为我担心任何知道这是Scrapyd服务器的人都可以使用API​​来操纵scrapyd的工作。

我只需要一个外部IP就可以与Scrapyd API进行交互,其他任何系统都无法访问它。

如何保护服务器以便不是每个人都可以与之交互?

我在谷歌上找不到任何东西。对不起,如果这是一个愚蠢的问题,但我真的没能弄清楚。 感谢。

2 个答案:

答案 0 :(得分:0)

这不是一个报废问题,这是一个服务器管理问题。您需要做的是从外部的ips关闭服务器上的scrapyd端口,除了您自己的端口。

答案 1 :(得分:0)

使用ubuntu上的nginx / htpasswd可以轻松完成,例如:

apt-get install nginx
apt-get install apache2-utils

1)将nginx配置为将请求从端口80代理到端口6800

server {
    listen 80 default_server;
    server_name _;

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
        proxy_pass http://this.is.your.ip:6800/;

        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;

    }
}

2)创建一个新用户/密码

htpasswd -c /etc/nginx/.htpasswd myuser

2b)重新加载

/etc/init.d/nginx restart

3)配置防火墙以放弃对端口6800的外部访问

ufw default deny incoming
ufw allow ssh
ufw default allow outgoing
ufw allow 80
ufw enable