2013-03-18 2 views
1

Я собираюсь сходить с ума, у меня очень простой WEBrickProxy (WEBrick 1.3.1, с Ruby 1.9.3), и я хочу попробовать его с помощью curl. Вот прокси:Webrick proxy + cURL возвращает неверный запрос

require 'webrick' 
require 'webrick/httpproxy' 

server = WEBrick::HTTPProxyServer.new(:BindAddress => "localhost", :Port => 8888) 
trap('INT') { server.shutdown } 
server.start 

А вот команда Curl

curl --proxy localhost:8888 http://www.google.de -v 

Но локон команда всегда возвращает плохой запрос:

* About to connect() to proxy localhost port 8888 (#0) 
* Trying ::1... 
* connected 
* Connected to localhost (::1) port 8888 (#0) 
> GET http://www.google.de HTTP/1.1 
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 
> Host: www.google.de 
> Accept: */* 
> Proxy-Connection: Keep-Alive 
> 
< HTTP/1.1 400 Bad Request 
< Content-Type: text/html; charset=ISO-8859-1 
< Server: WEBrick/1.3.1 (Ruby/1.9.3/2012-10-12) 
< Date: Mon, 18 Mar 2013 13:44:27 GMT 
< Content-Length: 295 
< Connection: close 
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> 
<HTML> 
    <HEAD><TITLE>Bad Request</TITLE></HEAD> 
    <BODY> 
    <H1>Bad Request</H1> 
    bad URI `http://www.google.de'. 
    <HR> 
    <ADDRESS> 
    WEBrick/1.3.1 (Ruby/1.9.3/2012-10-12) at 
    23tuxmb.local:8888 
    </ADDRESS> 
    </BODY> 
</HTML> 
* Closing connection #0 

curl --version возвращается на моем Mac OS X 10.8

curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz 

Я не могу узнать, где ошибка, и пару лет назад я пробовал эту часть кода, и я помню, что это сработало.

Странно то, что когда я настраиваю свой Mac для глобального использования этого прокси (внутри System Settings -> Network -> Advanced -> Proxies -> Web Proxy), все работает. Запрос с Chrome или любым другим приложением направляется через прокси-сервер (и я вижу это в журнале терминалов прокси-сервера).

Итак, может ли кто-нибудь воспроизвести эту проблему? Это завиток? Или проблема, связанная с Вебриком?

EDIT

Дополнительная информация: Выход самого рубинового сценария, когда ротор пытается соединиться

[2013-03-18 17:16:32] ERROR bad URI `http://www.amazon.de'. 
localhost - - [18/Mar/2013:17:16:32 CET] "GET http://www.amazon.de HTTP/1.1" 400 286 
- -> http://www.amazon.de 

ТНХ!

+0

Работайте со мной с помощью charm на 'OS X 10.7.4' и' curl 7.21.4 ' – Viren

+0

Я попробовал его сейчас на другой машине с' OS X 10.8.2' и 'curl 7.24.0' и другим интернетом соединение (до этого было по мобильному телефону), такой же результат. Любые другие идеи? – 23tux

+0

Я также пробовал 'curl 7.21.6', ту же проблему – 23tux

ответ

2

Если вы добавляете конечную косую черту к запрашиваемому URL-адресу, значит, она работает? Т.е. командной строки так:

локон --proxy локальный: 8888 http://www.google.de/ -v

(это завиток ошибка сообщается в bug #1206, и фиксируется в мерзавцем и в следующем выпуске ...)

+1

ВЫ УДИВИТЕЛЬНО! Спасибо, что исправил мою проблему. Может быть, я использовал совсем другую версию скручивания пару месяцев назад! – 23tux

Смежные вопросы