Linux上的Python请求403,但适用于Windows

时间:2017-08-05 19:00:06

标签: python linux web-scraping python-requests

我目前遇到一个网页抓取的奇怪问题,由于某种原因,相同的代码可以从我的PC(状态代码:200)工作,但不能从运行完全相同的python版本的Ubuntu 16.04服务器(状态代码:403)。

import requests
session = requests.Session()
response = session.get('https://zooqle.com/', headers={'User-Agent': 'Mozilla/5.0'})
print(response.status_code)

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

答案可能是防火墙出站规则,它阻止了您,我已经使用Python 2.7.13在我的Ubuntu 16.04上测试了您的代码,并获得了200状态。

使用以下方法检查入站和出站规则:

sudo iptables -L -n

我的iptable看起来像这样:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
DOCKER-ISOLATION  all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0    

我刚刚发布在这里供您与您比较并更正您的Linux防火墙,专注于ACCEPT / REJECT请求。

答案 1 :(得分:0)

结论:网站被ISP阻止。

解决方案:使用Web代理和网络抓取它来获取所需的数据