Socks mit Proxy verwenden
-
Guten Abend,
ich bin auf der Suche nach einer einfachen Erklärung dazu, wie
man eine Socketverbindung zu einem Ziel auch via Proxy herstellen kann.
Die Technik bei uns meinte wir können einen http oder socks 4/5 Proxy
intern festlegen, je nachdem was einfacher wäre...Momentan habe ich in meiner Anwendung eine direkte Verbindung zum Ziel
aufgebaut. Es ist nun aber wegen interner Umstellung der IT notwendig
das Tool über einen internen Proxy laufen zu lassen.Ich würde mich über Hilfe freuen. Vermutlich ist es simpel, aber
ich habe dazu keine gute Erklärung gefunden.Aktueller Auszug aus meinem Code, den ich um Proxy-Option erweitern möchte:
SOCKET s; WSADATA wsa; a = WSAStartup(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addr; memset (&addr,0,sizeof(SOCK_ADDR_IN)); addr.sin_family = AF_INET; addr.sin_port = htos(80); //port 80 addr.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx"); //zielhost-ip long rc = connect (s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
-
Hey,
das geht nicht über die WinAPI, dass musst du scho selber machen... Im Prinzip spricht der auch nur über ein Protokoll mit dem Proxy. Da ich grad am Handy sitze kann ich dir des leider nicht raussuchen, aber ich denke mit "http proxy" wirst du genug findenViel Spaß
-
Dazu musst du eine Connect Funktion schreiben die nach rfc1928/rfc1929 tanzt.
Auf meiner kleinen opensource Projekt Seite, findest du die smtplibex und pop3libex library, bei denen ich meine eigene socksv4/socksv5 Client Implementierung verwendet habe. Meine Implementierung unterstützt rfc1928/1929 vollständig. Bzw. es werden auch Domain-Names und Authentifizierung für socksv5 unterstützt.Die spezifischen Funktionen aus http://xor-base.dynu.net/smtplibex.c sind:
int TcpConnectTo(char *host_str ,SOCKET *p_sock ,SOCKADDR_IN *addr_struct ,unsigned short port ,long connection_timeout_msec) int TcpConnectToOverSocksProxyChain(SOCKET *p_sock ,SOCKS_VERX_STRUCT *socks_verx_struct ,long connection_timeout_msec) und die Struktur SOCKS_VERX_STRUCT.
Ansonnsten:
http://www.ietf.org/rfc/rfc1928.txt
http://www.ietf.org/rfc/rfc1929.txt
-
Edit: Meine library würde auch eine Kette von socksv4/5 Server unterstützen...wenn es den überhaupt Socks sein soll.