我试图从本地服务器上抓取自己的网站。但是当我在它上面使用python请求时,它会给我一个响应503.网上其他普通网站的工作。有什么理由/解决方案?
import requests
url = 'http://127.0.0.1:8080/full_report/a1uE0000002vu2jIAA/'
r = requests.get(url)
print r
打印出来
<Response [503]>
经过进一步调查,我发现了类似的问题。 Python requests 503 erros when trying to access localhost:8000
但是,我不认为他已经解决了。我可以通过网络浏览器访问本地网站,但无法使用requests.get功能进行访问。我也使用Django来托管服务器。
python manage.py runserver 8080
当我使用时: curl -vvv http://127.0.0.1:8080
* Rebuilt URL to: http://127.0.0.1:8080/
* Trying 10.37.135.39...
* Connected to proxy.kdc.[company-name].com (10.37.135.39) port 8099 (#0)
* Proxy auth using Basic with user '[company-id]'
> GET http://127.0.0.1:8080/ HTTP/1.1
> Host: 127.0.0.1:8080
> Proxy-Authorization: Basic Y2FhNTc2OnJ2YTkxQ29kZQ==
> User-Agent: curl/7.49.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: BlueCoat-Security-Appliance
< Location:http://10.118.216.201
< Connection: Close
<
<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>
* Closing connection 0
答案 0 :(得分:6)
我无法使用python请求请求本地URL,因为该公司的网络软件不允许这样做。这是一个死胡同,必须采取其他途径。
编辑:工作解决方案
>>> import requests
>>> session = requests.Session()
>>> session.trust_env = False
>>> r = session.get("http://127.0.0.1:8080")
>>> r
<Response [200]>
答案 1 :(得分:0)
由于服务器临时过载或维护,Web服务器(运行Web站点)当前无法处理HTTP请求。这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解。处于此状态的某些服务器也可能只是拒绝套接字连接,在这种情况下可能会生成不同的错误,因为套接字创建超时。
你可以做以下事情:
答案 2 :(得分:0)
503错误的最常见原因是某种形式的代理主机无法与后端通信。例如,如果您有Varnish尝试处理请求但Apache已关闭。
在您的情况下,您在端口8080
上运行Django。 (这是8080
的含义)。但是,当您尝试从127.0.0.1
获取内容时,您将转到默认HTTP端口(80)。这意味着您的默认服务器(Apache可能是?NginX?)正在尝试查找要提供127.0.0.1
的主机,但无法找到。
你有两个选择。您可以更新服务器的配置,也可以在URL中包含该端口。
url = 'http://127.0.0.1:8080/full_report/a1uE0000002vu2jIAA/'
答案 3 :(得分:0)
也许您应该在请求中禁用代理。
import requests
proxies = {
"http": None,
"https": None,
}
requests.get("http://127.0.0.1:8080/myfunction", proxies=proxies)
参考: