J'ai cette adresse proxy: 125.119.175.48:8909
Comment puis-je effectuer une requête HTTP en utilisant cURL comme curl http://www.example.com
, mais en spécifiant l'adresse proxy de mon réseau?
J'ai cette adresse proxy: 125.119.175.48:8909
Comment puis-je effectuer une requête HTTP en utilisant cURL comme curl http://www.example.com
, mais en spécifiant l'adresse proxy de mon réseau?
Réponses:
Manière générale:
export http_proxy=http://your.proxy.server:port/
Ensuite, vous pouvez vous connecter via un proxy à partir de (nombreuses) applications.
Et, selon le commentaire ci-dessous, pour https:
export https_proxy=https://your.proxy.server:port/
De man curl
:
-x, --proxy <[protocol://][user:password@]proxyhost[:port]>
Use the specified HTTP proxy.
If the port number is not specified, it is assumed at port 1080.
-x user:password@proxyhost:port
Les solutions ci-dessus peuvent ne pas fonctionner avec certaines versions de curl, je les ai essayées moi-même (curl 7.22.0). Mais ce qui a fonctionné pour moi, c'est:
curl -x http://proxy_server:proxy_port --proxy-user username:password -L http://url
J'espère que cela résoudra mieux le problème!
[1] 4812
Sachez que si vous utilisez un proxy SOCKS, au lieu d'un proxy HTTP / HTTPS, vous devrez utiliser le --socks5
commutateur à la place:
curl --socks5 125.119.175.48:8909 http://example.com/
Vous pouvez également utiliser --socks5-hostname
au lieu de --socks5
pour résoudre DNS sur le côté proxy.
--socks5-hostname
.
curl https://api.ipify.org --proxy socks5://189.100.246.182:37339
semble bien fonctionner pour moi. L' --proxy
option est-elle en quelque sorte inférieure à l' --socks5
utilisation de proxys socks5?
--proxy
est probablement ce que vous voulez maintenant, mais il n'a pas toujours été pris en charge. Notez également que socks5://
et socks5h://
effectuez la résolution du nom d'hôte (DNS) avant et après la connexion au proxy, respectivement.
comme ajout à airween, une autre bonne idée est d'ajouter ceci dans votre .bashrc, ainsi vous pourrez passer d'un environnement non proxy à un environnement proxy:
alias proxyon="export http_proxy='http://YOURPROXY:YOURPORT';export https_proxy='http://YOURPROXY:YOURPORT'"
alias proxyoff="export http_proxy='';export https_proxy=''"
O YOUR YOURPROXY: YOURPORT est exactement cela, votre proxy IP et port :-).
Ensuite, tout simplement
proxyon
votre système commencera à utiliser le proxy, et au contraire avec:
proxyoff
utilisez le suivant
curl -I -x 192.168.X.X:XX http://google.com
192.168.X.X:XX
mettez l'IP et le port de votre serveur proxy.
-v
en mode verbeux, il donnera plus de détails, y compris les en-têtes et la réponse.
vous pouvez utiliser :
curl http://www.example.com --proxy http://125.119.175.48:8909
comme expliqué par Karl
Pour que curl
vous puissiez configurer le proxy dans votre fichier ~/.curlrc
( _curlrc
sous Windows) en ajoutant de la proxy
valeur, la syntaxe est:
proxy = http://username:password@proxy-host:port
Résumant simplement toutes les bonnes réponses mentionnées:
curl -x http://<user>:<pass>@<proxyhost>:<port>/ -o <filename> -L <link>
Avec un proxy avec authentification j'utilise:
curl -x <protocol>://<user>:<password>@<host>:<port> --proxy-anyauth <url>
parce que, je ne sais pas pourquoi curl n'utilise pas / attrape les variables d'environnement http [s] _proxy .
C:\Desktop>curl --head https://www.google.com/ --proxy 1.1.1.1:8080
Vous n'avez pas besoin d'exporter la http[s]_proxy
variable shell si vous définissez simplement le proxy pour une commande unique. par exemple
http_proxy=http://your.proxy.server:port curl http://www.example.com
Cela dit, je préférerais curl -x
si je savais que j'allais toujours utiliser un proxy.
Selon votre lieu de travail, vous devrez peut-être également spécifier le -k
ou le--insecure
option option pour curl afin de résoudre les problèmes potentiels passés avec les certificats d'autorité de certification.
curl -x <myCompanyProxy>:<port> -k -O -L <link to file to download>
sudo curl -x http://10.1.1.50:8080/ -fsSL https://download.docker.com/linux/ubuntu/gpg
Cela a parfaitement fonctionné pour moi, l'erreur vient du fait que curl doit définir le proxy
N'oubliez pas de remplacer le proxy par votre proxy, le mien, "exemple" était http://10.1.1.50:8080/ .
Dans le cas où le proxy utilise un proxy automatique avec un fichier PAC. Nous pouvons trouver le proxy réel à partir du javascript de l'URL PAC.
Et si le proxy a besoin d'une authentification, nous pouvons d'abord utiliser un navigateur Web normal pour accéder au site Web qui favorisera la boîte de dialogue d'authentification. Après l'authentification, nous pouvons utiliser Wireshark pour capturer le package http envoyé au serveur proxy, à partir du package http, nous pouvons obtenir le jeton d'authentification à partir de l'en-tête http: Proxy-Authorization
Ensuite, nous pouvons définir la variable d'environnement http_proxy et également inclure le jeton d'authentification dans l'en-tête http: Proxy-Authorization
export http_proxy = http: // proxyserver: port
curl -H "Proxy-Authorization: xxxx" http: // targetURL