Requests falsch bei Remote Proxy

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

Requests falsch bei Remote Proxy

Beitragvon khambrecht » Do Dez 08, 2011 12:48 am

Moin,

ich nutze YaCy hinter einem Proxy (Squid) welcher unter Advanced Settings -> Remote Proxy eingetragen ist. Allerdings lassen sich dann viele Seiten nicht crawlen bzw. über YaCy als Proxy aufrufen. Im Log von YaCy steht dann z.B. folgendes:
Code: Alles auswählen
W 2011/12/07 22:46:46 StackTrace java.io.IOException: REJECTED EMPTY RESPONSE BODY 'HTTP/1.0 404 Not Found' for URL http://www.yacy.net/

Also habe ich mal gesniffed, was YaCy an den Squid-Proxy schickt:
Code: Alles auswählen
GET http://81.169.145.169/ HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip
Accept-Language: en-us,en;q=0.5
User-Agent: yacybot (freeworld/global; i386 Linux 3.1.4-1.fc16.i686.PAE; java 1.6.0_29; Europe/de) http://yacy.net/bot.html
Host: www.yacy.net
Proxy-Connection: Keep-Alive

Als Response vom Squid-Proxy kommt dann zu YaCy zurück:
Code: Alles auswählen
HTTP/1.0 404 Not Found
Date: Wed, 07 Dec 2011 21:46:46 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r
Content-Length: 198
Content-Type: text/html; charset=iso-8859-1
Age: 597
X-Cache: HIT from proxy
X-Cache-Lookup: HIT from proxy:3128
Via: 1.0 proxy:3128 (squid/2.6.STABLE21)
Proxy-Connection: close

Meiner Meinung nach ist aber der GET-Request von YaCy an den Squid falsch. Statt
Code: Alles auswählen
GET http://81.169.145.169/ HTTP/1.1
müsste es heißen
Code: Alles auswählen
GET http://www.yacy.net/ HTTP/1.1

Gibt es irgendwo noch eine Config Option mit der man die Remote Proxy Requests beeinflussen kann?
YaCy ist V1.01/9000 mit SUN/Orace JRE 1.6.0_29 auf Linux (Fedora)
khambrecht
 
Beiträge: 5
Registriert: Mi Dez 07, 2011 11:09 pm

Re: Requests falsch bei Remote Proxy

Beitragvon Low012 » Do Dez 08, 2011 1:46 pm

Ich gehe mal davon aus, dass du http://www.yacy.net über die Domain aufgerufen hast und nicht über die IP.

Das müsste doch eigentlich heißen, dass der ursprüngliche Request ungefähr so ausgesehen haben müsste:

Code: Alles auswählen
GET / HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip
Accept-Language: en-us,en;q=0.5
User-Agent: irgendein Browser v47.11
Host: www.yacy.net


Da ich mir unsicher war, habe ich ein bisschen recherchiert und bin in RFC 2616, Section 5.1.2 fündig geworden, wo steht:

A transparent proxy MUST NOT rewrite the "abs_path" part of the received Request-URI when forwarding it to the next inbound server, except as noted above to replace a null abs_path with "/".


Würde das nicht heißen, dass der Request, den YaCy an Squid schickt, dann auch hinter dem GET weder IP noch Hostnamen enthalten dürfte?
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: Requests falsch bei Remote Proxy

Beitragvon khambrecht » Do Dez 08, 2011 3:00 pm

Low012 hat geschrieben:Ich gehe mal davon aus, dass du http://www.yacy.net über die Domain aufgerufen hast und nicht über die IP.

ja klar.

Das müsste doch eigentlich heißen, dass der ursprüngliche Request ungefähr so ausgesehen haben müsste:

Code: Alles auswählen
GET / HTTP/1.1
[...]
Host: www.yacy.net


genau. Wenn ich den Remote Proxy abschalte, sieht der Request so aus.

Da ich mir unsicher war, habe ich ein bisschen recherchiert und bin in RFC 2616, Section 5.1.2 fündig geworden, wo steht:

A transparent proxy MUST NOT rewrite the "abs_path" part of the received Request-URI when forwarding it to the next inbound server, except as noted above to replace a null abs_path with "/".


Würde das nicht heißen, dass der Request, den YaCy an Squid schickt, dann auch hinter dem GET weder IP noch Hostnamen enthalten dürfte?

Na ja, der Squid ist ja kein transparenter Proxy (sprich, der HTTP Client "weiß" gar nicht, daß ein Proxy vorgeschaltet ist), sondern ein klassischer HTTP-Proxy. D.h. der Client muss einen Proxy-konformen Request stellen. Im RFC 2616, Section 5.1.2 steht da auch:
The absoluteURI form is REQUIRED when the request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache, and return the response. Note that the proxy MAY forward the request on to another proxy or directly to the server specified by the absoluteURI. In order to avoid request loops, a proxy MUST be able to recognize all of its server names, including any aliases, local variations, and the numeric IP address. An example Request-Line would be:
Code: Alles auswählen
GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

Insofern müsste der Request von YaCy an den Squid so aussehen:
Code: Alles auswählen
GET http://www.yacy.net/ HTTP/1.1
khambrecht
 
Beiträge: 5
Registriert: Mi Dez 07, 2011 11:09 pm

Re: Requests falsch bei Remote Proxy

Beitragvon kilian » Fr Jan 06, 2012 7:42 pm

hab gerade das gleiche problem. hab leider nicht die möglichkeit mitzusniffen.
java.io.IOException: REJECTED EMPTY RESPONSE BODY 'HTTP/1.1 503 Service Unavailable' for URL
könnte sich das bitte jemand anschauen?
sendet yacy tatsächlich nicht rfc konforme proxy anfragen?
kilian
 
Beiträge: 79
Registriert: Mi Feb 23, 2011 11:34 am
Wohnort: Bayern

Re: Requests falsch bei Remote Proxy

Beitragvon khambrecht » Mo Jan 16, 2012 10:06 pm

habe gerade einen Bug Report gefunden der genau das Problem beschreibt:

http://bugs.yacy.net/view.php?id=126
khambrecht
 
Beiträge: 5
Registriert: Mi Dez 07, 2011 11:09 pm

Re: Requests falsch bei Remote Proxy

Beitragvon kilian » Mo Jan 16, 2012 10:38 pm

ha. der mann hat recht, glaub ich :-).
hab mit wireshark mitgesniffed, als ich einen crawl über den proxy starten wollte.

passiert ist gar nix. hab hald http gefiltert, aber wenn natürlich der DNS-Lookup schon fehlgeschlagen ist, weil yacy die domain nicht auflösen kann, sendet er natürlich auch keine http request mehr raus...
kilian
 
Beiträge: 79
Registriert: Mi Feb 23, 2011 11:34 am
Wohnort: Bayern

Re: Requests falsch bei Remote Proxy

Beitragvon khambrecht » Di Jan 17, 2012 10:27 am

kilian hat geschrieben:[...]aber wenn natürlich der DNS-Lookup schon fehlgeschlagen ist, weil yacy die domain nicht auflösen kann, sendet er natürlich auch keine http request mehr raus...

also wenn ich das richtig verstandan habe, ist es so, daß YaCy einen DNS Lookup macht bevor der Request von dem YaCy-internen HTTPClient abgesetzt wird. Dieser HTTPClient nimmt dann die IP für den Connect und anschließenden GET Request und gibt den Hostname nur noch im "Host"-HTTP-Header mit. Das funktioniert bei Request ohne Proxy da der Connect ja direkt auf den Ziel-Host geht. Das klappt aber nicht bei Request mit Proxy, da der HTTPClient dann die absolute URL für den GET Request auch mit IP anstatt Hostnamen baut. Und das ist gemäß RFC (s.o.) falsch, weshalb es der Ziel-Host mit einem 404er oder der Proxy mit einem 503er beantwortet.

Sinnvollerweise sollte bei Request über Proxy auch dieser die DNS Auflösung machen. Manchmal gibt es in internen Netzen, wenn die Clients nur über Proxy nach "draussen" kommen, nur eine DNS Auflösung von internen Adressen und gar nicht von externen. Spätestens dann muss der Proxy selbst auflösen und braucht dafür einen GET Request mit Hostname in der absoluten URL.
khambrecht
 
Beiträge: 5
Registriert: Mi Dez 07, 2011 11:09 pm


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste