httplib2 дает внутреннюю ошибку сервера 500 с прокси - PullRequest
1 голос
/ 25 мая 2010

Ниже приведен код и сообщение об ошибке. Работает нормально без прокси http = httplib2.Http().

Когда я пытаюсь использовать тот же http прокси в Firefox, он работает нормально.

Любые указатели высоко ценятся!

Использование:

http = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, '68.48.25.158', 25681))

main_url = 'http://www.mywebsite.com'
response, content = http.request(main_url, 'GET')

Ошибка:

  File "testproxy.py", line 17, in <module>
    response, content = http.request(main_url, 'GET')
  File "/home/kk/bin/pythonlib/httplib2/__init__.py", line 1129, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/home/kk/bin/pythonlib/httplib2/__init__.py", line 901, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/home/kk/bin/pythonlib/httplib2/__init__.py", line 862, in _conn_request
    conn.request(method, request_uri, body, headers)
  File "/usr/lib/python2.5/httplib.py", line 866, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.5/httplib.py", line 889, in _send_request
    self.endheaders()
  File "/usr/lib/python2.5/httplib.py", line 860, in endheaders
    self._send_output()
  File "/usr/lib/python2.5/httplib.py", line 732, in _send_output
    self.send(msg)
  File "/usr/lib/python2.5/httplib.py", line 699, in send
    self.connect()
  File "/home/kk/bin/pythonlib/httplib2/__init__.py", line 740, in connect
    self.sock.connect(sa)
  File "/home/kk/bin/pythonlib/socks.py", line 383, in connect
    self.__negotiatehttp(destpair[0],destpair[1])
  File "/home/kk/bin/pythonlib/socks.py", line 349, in __negotiatehttp
    raise HTTPError((statuscode,statusline[2]))
socks.HTTPError: (500, 'Internal Server Error')

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Убедитесь, что прокси не прозрачен. Я не слишком много знаю об этом, но, очевидно, прозрачный прокси позволяет серверу видеть, что вы используете прокси, и, возможно, даже получить доступ к вашему IP. Некоторые веб-сайты определенно закрывают любые запросы, которые, кажется, исходят от прокси (из-за боязни ботов). Это может означать либо создание ложной внутренней ошибки сервера, либо фактическое обнаружение ошибки. Для меня использование анонимного прокси всегда решало эту проблему. Так как вы сказали, что это работает без прокси, я бы начал там.

0 голосов
/ 25 мая 2010

Клиентская библиотека SOCKS установлена ​​и доступна для вашего кода? Поддержка прокси работает, только если установлена ​​библиотека SOCKS.

...