Proxyeinstellungen für die HTTP-Anforderung mit libcurl

4793
linux developer

Ich bin relativ neu bei HTTP-Protokollen, die Proxies und Authentifizierung beinhalten. Ich arbeite an einer Anwendung, die unter Windows ausgeführt wird und das Hostnetzwerk zum Senden / Empfangen von HTTP / S-Anforderungen verwendet. Es verwendet auch Libcurl, um die Übertragung zu erleichtern.

Ich habe jedoch einige Probleme, wenn ich einen Proxy verwenden muss. Da ich in einem Netzwerk bin, habe ich einen Proxy für bestimmte URLs mit einer PAC-Datei definiert. Da Libcurl keine Javascript-Unterstützung hat, verwende ich PACParser, um die PAC-Datei zu analysieren und den Proxy zu ermitteln.

Wenn ich den Proxy verwende, erhalte ich eine 407-Authentifizierung. Ich bin nicht sicher, wie die Proxy-Authentifizierung zu überwinden ist. Ich habe verschiedene verfügbare Einstellungen mit CURL wie BASIC / DIGEST / NTLM ausprobiert. Keiner von ihnen scheint zu funktionieren. Wenn ich jedoch den Benutzernamen und das Kennwort in der Anforderung festcodiere, sehe ich die Anforderung durch.

Wie kann ich vermeiden, den Benutzernamen / das Kennwort fest zu codieren, um sicherzustellen, dass die Proxy-Verwendung funktioniert?

0

1 Antwort auf die Frage

0
artistoex

Siehe libcurl-tutorial (3)Abschnitt Umgebungsvariablen :

libcurl automatically checks and uses a set of environment variables to know what proxies to use for certain protocols. The names of the variables are following an ancient de facto standard and are built up as "[protocol]_proxy" (note the lower casing). Which makes the variable 'http_proxy' checked for a name of a proxy to use when the input URL is HTTP. Following the same rule, the variable named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are always HTTP proxies, the different names of the variables simply allows different HTTP proxies to be used.  The proxy environment variable contents should be in the format "[protocol://][user:password@]machine[:port]". 

Sie müssen also den Proxy in den Umgebungsvariableneinstellungen eingeben, nicht in den Netzwerkeinstellungen.

Aber ich versuche, einen Weg zu finden, um eine Proxy-Authentifizierung zu erreichen, wenn mein Proxy dies verlangt. linux developer vor 10 Jahren 0
Hinzufügen von "user: password @" funktioniert nicht? artistoex vor 10 Jahren 0
Ich ging davon aus, dass Curl mit dem Host-Computer verhandeln kann, um den Benutzernamen und das Kennwort während der Übertragung abzurufen. Wir müssen den Benutzernamen und das Passwort ableiten. Ich habe versucht, "http-Abfrageoption" von winhttp zu erkunden, um den Benutzernamen und pwd zu erhalten. Ist dies etwas Richtiges? Oder gibt es einen anderen Mechanismus, um den Proxy-Benutzernamen und das Passwort abzurufen linux developer vor 10 Jahren 0