J'ai un fichier proxy txt au format:
102.129.249.120:3128 102.129.249.120:8080 101.4.136.34:8080 103.228.117.244:8080 103.253.27.108:80 104.45.188.43:3128 104.250.34.179:80 105.27.238.161:80 104.154.143.77:3128 110.243.20.2:9999 111.68.26.237:8080 106.104.151.142:58198 113.252.95.19:8197 115.231.31.130:80 118.69.50.154:80 118.69.50.154:443 119.81.189.194:80 119.81.189.194:8123 119.81.199.81:8123 119.81.199.83:8123 119.81.199.80:8123 12.139.101.100:80 12.139.101.101:80 119.81.199.85:31288 119.81.199.86:8123 119.81.199.87:8123 12.139.101.102:80 124.156.98.172:443 13.228.91.252:3128 138.197.157.32:3128 138.197.157.32:8080 138.68.240.218:8080 138.68.240.218:3128 138.68.60.8:8080 138.68.60.8:3128
et j'essaie de créer un script bash qui fera (par exemple): curl -x "$ IP "google.com
.
Malheureusement, curl me donne une syntaxe de proxy non prise en charge pour tous les proxies.
Des idées?
BTW, je doute vraiment que cette question ait été répétée car j'ai essayé tout le reste en vain.
Mon script:
Number=$(wc -l < ProxyList.txt) for ((i=1;i<=$Number;++i)) do ip=$(head -n ${i} ProxyList.txt | tail -n +${i}) curl -p -x "$ip" 'webpage' -H 'user-agent' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Cookie: wpml_referer_url=referer; _icl_current_language=es; PHPSESSID=tpikve1vl4ued06i082vprqdo1' -H 'If-Modified-Since: Mon, 16 May 2016 07:27:13 GMT' -H 'If-None-Match: "3d6-532f08d9d7640-gzip"' -H 'Cache-Control: max-age=0' -m 6 done
Un petit échantillon de mon liste de proxy:
102.129.249.120:3128 102.129.249.120:8080 101.4.136.34:8080 103.228.117.244:8080 etc
3 Réponses :
essayez ceci:
export http_proxy=http://1.2.3.4:3128/ export https_proxy=http://1.2.3.4:3128/
mais le problème avec curl pourrait être, cela devrait définir les variables d'environnement http_proxy
et https_proxy
comme ceci :
for ip in $(cat ProxyList.txt) do curl -p -x "$ip" 'webpage' -H 'user-agent' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Cookie: wpml_referer_url=referer; _icl_current_language=es; PHPSESSID=tpikve1vl4ued06i082vprqdo1' -H 'If-Modified-Since: Mon, 16 May 2016 07:27:13 GMT' -H 'If-None-Match: "3d6-532f08d9d7640-gzip"' -H 'Cache-Control: max-age=0' -m 6 done
Même erreur ... J'utilise ubuntu 20.04 est-ce que cela pourrait être le problème?
'url: (5) Syntaxe de proxy non prise en charge dans' 105.29.64.222:80
veuillez donner https://stackoverflow.com/questions/9445489/performing-http- demandes-avec-curl-u sing-proxy un essai
commencez par définir les variables d'environnement proxy, puis appelez curl http://www.google.com
etc.
Oui. Cela ne fonctionne que si je saisis l'ip sans la variable (manuellement)
quelle est la sortie de pour ip dans $ (cat ProxyList.txt); do echo "- $ ip -"; done
?
Cela fonctionne, j'ai essayé cela aussi, il affiche la liste de proxy comme d'habitude!
@Oliver Gaida, j'ai vu les variables d'environnement http_proxy / https_proxy fonctionner avec wget , mais à ma connaissance cela ne fonctionne pas avec curl .
J'ai essayé ça avec curl et ça "marche" (au moins ça me donne la même erreur ...)
Cela a été résolu mais merci! Et non je ne le sais pas
C'est l'outil avec unix2dos pour changer les fins de ligne entre dos et unix.
Selon la page de manuel curl, le commutateur -x (ou --proxy) peut être préfixé avec le protocole devant l'argument (s'il est omis, je suppose qu'il est par défaut http: //):
-x, --proxy [protocole: //] hôte [: port]
Un simple script bash avec xargs ressemblerait à:
#!/bin/bash webpage=${1:-http://google.com} cat ProxyList.txt \ | xargs -n1 -I{} curl -p -x http://{} "$webpage" -H 'user-agent' -H 'Accept: */*' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Cookie: wpml_referer_url=referer; _icl_current_language=es; PHPSESSID=tpikve1vl4ued06i082vprqdo1' -H 'If-Modified-Since: Mon, 16 May 2016 07:27:13 GMT' -H 'If-None-Match: "3d6-532f08d9d7640-gzip"' -H 'Cache-Control: max-age=0' -m 6
Pas encore ??? Même erreur. Quelle version d'ubuntu avez-vous? Ou avez-vous une autre distribution ?? Je ne sais vraiment pas.
'url: (5) Syntaxe de proxy non prise en charge dans' 46.35.184.187:61003
Debian 5.4.19 / curl 7.68.0
Je reçois "curl: (56) Code HTTP 400 reçu du proxy après CONNECT" de vos proxys. Cela semble être lié à votre commutateur "-p" (tunneling). Semble que les procurations ne prennent pas en charge cela? D'autre part, cela montre que la partie "-x" des instructions fonctionne.
Votre fichier d'entrée contient des caractères de retour chariot à la fin de chaque ligne.
Chaque ligne de votre fichier d'entrée se termine par \ r \ n
au lieu de simplement \ n
.
Vous pouvez vérifier avec od
: p>
while read proxy; do curl -p -x $proxy $webpage done < <( tr -d '\r' < ProxyList.txt )
Donc, dans votre script, $ ip
a en fait une valeur de 102.129.249.120:3128\r
. p>
Vous pouvez supprimer les caractères \ r
avec tr
par exemple:
$ head -1 ProxyList.txt | od -c 0000000 1 0 2 . 1 2 9 . 2 4 9 . 1 2 0 : 0000020 3 1 2 8 \r \n 0000026
@oguzismail Terminé
J'utiliserais des xargs, comme
xargs -I {} curl -x {} .... Mais si ProxyList.txt a des fins de ligne DOS, il échouerait non plus
Pourriez-vous donner un exemple?
comment utiliser xargs j'ai essayé echo $ ip | xargs curl url et cela ne fonctionnait toujours pas. Même erreur.
Quelle est l'erreur que vous obtenez? Il vous manque également un point-virgule juste avant le
do
de votre bouclefor
.@tectux Désolé, c'était une erreur de formatage. J'avais un espace. Erreur: 'url: (5) Syntaxe de proxy non prise en charge dans' 207.154.231.213:8080