2015-11-17 2 views
0

Этот скрипт, использующий торнадо, получает код ответа http 500 на некоторых живых хостах. Пожалуйста, не обращайте внимания на цикл. Это связано с упрощением моего кода. Я пробовал использовать ip, но безрезультатно.Скрипт Tornado получает код ответа 500 на хост-хосте

#!/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() 
+0

Просто установите 'validate_cert = False' как параметр для' HTTPRequest'. – matagus

+0

Выполнено, и теперь его внутренняя ошибка 500. – user2862361

+0

Ваш скрипт является HTTP-клиентом. Вы должны обрабатывать ошибки 5xx и 4xx с серверов. – matagus

ответ

0

Несмотря на неопровержимый сертификат. Сначала я подозреваю, что это некоторая безопасность для ботов, но на этом сайте есть проблемы с обработкой ошибок, для этого требуется Accept-Language. Даже скручивание терпит неудачу. Для того, чтобы заставить работать это просто передать этот заголовок:

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) 

Я бы рекомендовал добавить более общий браузер заголовков

  • Accept
  • Accept-Encoding
  • Accept-Language
  • Подключение
  • User-Agent (некоторые браузеры не рассматриваются как бот)
Смежные вопросы