我目前遇到一个网页抓取的奇怪问题,由于某种原因,相同的代码可以从我的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)
为什么会发生这种情况?
答案 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代理和网络抓取它来获取所需的数据