Python Tornado脚本在实时主机上获取响应代码500
此脚本使用tornado在一些活动主机上获取http响应代码500。请不要介意这个循环。这是因为过于简化了我的代码块。我尝试过使用ip,但没有用Python Tornado脚本在实时主机上获取响应代码500,python,ssl,tornado,Python,Ssl,Tornado,此脚本使用tornado在一些活动主机上获取http响应代码500。请不要介意这个循环。这是因为过于简化了我的代码块。我尝试过使用ip,但没有用 #!/usr/bin/python import tornado from tornado import httpclient from tornado import gen from tornado.httpclient import AsyncHTTPClient gloop = tornado.ioloop.IOLoop.instance()
#!/usr/bin/python
import tornado
from tornado import httpclient
from tornado import gen
from tornado.httpclient import AsyncHTTPClient
gloop = tornado.ioloop.IOLoop.instance()
@gen.engine
def process(url):
print url
try:
http_client = httpclient.AsyncHTTPClient()
request = tornado.httpclient.HTTPRequest(url=str(url), connect_timeout=5.0, validate_cert = False, request_timeout=5.0, follow_redirects=True)
response = yield tornado.gen.Task(http_client.fetch, request)
print url
print response.code
if response.error: raise Exception(response.error)
except Exception as e:
print e
gloop.add_callback(process, 'http://www.dhlsameday.com')
tornado.httpclient.AsyncHTTPClient.configure("tornado.curl_httpclient.CurlAsyncHTTPClient")
gloop.start()
尽管证书不可信。起初我怀疑对机器人程序来说是安全的,但是这个网站在错误处理方面有问题,它需要
接受语言
。甚至连卷曲都失败了。要开始工作,只需传递该标题:
headers = {"Accept-Language": "en-US;q=0.7,en;q=0.3"}
request = tornado.httpclient.HTTPRequest(url=str(url), headers=headers, connect_timeout=5.0, validate_cert = False, request_timeout=5.0, follow_redirects=True)
我建议添加更多常见的浏览器标题
- 接受
- 接受编码
- 接受语言
- 联系
- 用户代理(某些浏览器不被视为bot)
validate\u cert=False
设置为HTTPRequest
的参数。完成此操作后,其内部错误为500。您的脚本是HTTP客户端。您必须处理来自服务器的5xx和4xx错误。谢谢matagus,但我应该从服务器获得HTTPClientResponse,不是吗?我从浏览器中获取页面,但不是从该脚本(在某些主机上)获取。尝试将浏览器代理添加到请求参数中,但没有帮助…:(@matagus简单地说,使用浏览器dhlsameday得到200,但为什么脚本得到500?