Paggamit ng proxy sa cURL, pag-check ng HTTP at SOCKS5 proxy sa command line
Ang gabay na ito ay nagpapaliwanag kung paano ikonekta sa HTTP proxy at SOCKS5 proxy ng Socks5Proxy gamit ang cURL, username/password authentication, pagsukat ng response time, at shell script para icheck ang buong listahan nang sabay-sabay.
Bakit magandang subukan ang proxy gamit ang cURL?
Ang cURL ay naka-install sa halos lahat ng server at development environment, kaya ito ang pinakamabilis na paraan para i-verify kung gumagana ang proxy. Kapag may problema sa code o browser settings, maaari mong subukan ang parehong line sa cURL para malaman kung proxy o code ang issue.
Ginagamit ang IP 198.51.100.23, HTTP port 8000, SOCKS5 port 1080, username spx_user, password spx_pass.
Paano ikonekta ang HTTP proxy?
Ilagay ang proxy address sa -x (o --proxy) option. Maaaring ilagay ang username at password sa loob ng address o hiwalay gamit ang -U option. Kapag nag-request ng HTTPS address, gagawa ang cURL ng tunnel gamit ang CONNECT at magre-request sa loob nito gamit ang encryption.
# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org
# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.orgPaano kumonekta sa SOCKS5 proxy?
Ginagawa ng --socks5-hostname ang domain name resolution sa proxy side. Hindi lalabas ang DNS request ng iyong server, at ang name resolution ay batay sa bansa kung saan matatagpuan ang proxy. Ginagawa ng --socks5 ang name resolution sa iyong server bago ipadala ang IP sa proxy. Karamihan ng mga kaso, inirerekomenda ang --socks5-hostname.
Maaari ring gamitin ang address format na socks5h:// sa -x para sa parehong resulta.
# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org
# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.orgPaano makikita ang response time at status nang sabay?
Gamit ang -w option, maaaring i-print ang connection time, time to first byte, total time, at response code sa isang linya. Kapaki-pakinabang ito para ikumpara ang bilis ng mga proxy sa iba't ibang bansa o para malaman kung ang target site o proxy ang mabagal.
Itapon ang body gamit ang -o /dev/null at patayin ang progress indicator gamit ang -s para makita nang malinis ang resulta.
curl -s -o /dev/null \
-x http://spx_user:spx_pass@198.51.100.23:8000 \
-w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
https://example.com/Paano iche-check ang buong list nang isahan?
Kung kukuha ka ng list gamit ang API at magpapatakbo ng cURL sa bawat line, pwede mong i-check ang status ng lahat ng proxy nang sabay-sabay. Ang script sa ibaba ay kumukuha ng list sa ip:port:user:pass format at nagpi-print ng response IP at time taken sa bawat line. May timeout para hindi mag-hang sa mga line na walang response.
#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
"https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt
while IFS=: read -r ip port user pass; do
out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
echo "$ip:$port $out"
done < proxies.txtPwede bang tawagin ang API gamit ang cURL?
Oo. Ang balance check, active plan list, at proxy list ay maaaring tawagin gamit ang isang Authorization: Bearer header. Ang JSON response ay maaaring i-filter gamit ang tool tulad ng jq para makita lamang ang mga kinakailangang field.
curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"Pwede rin bang mag-set ng proxy gamit ang environment variables?
Oo. Ang cURL at maraming command-line tool ay nagbabasa ng http_proxy, https_proxy, at all_proxy environment variable. Kapag itinakda mo ito sa shell, lahat ng tool tulad ng cURL, wget, at pip na tumatakbo sa shell na iyon ay gagamit ng parehong proxy. Para sa SOCKS5, ilagay ang socks5h:// address sa all_proxy.
Ilagay sa no_proxy ang mga address na hindi dapat dumaan sa proxy, separated by comma. Para maiwasan ang internal servers o localhost na dumaan sa proxy.
export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org
# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"Paano ihambing ang resulta ng HTTP proxy at SOCKS5 proxy?
Kapag nag-request sa parehong address gamit ang dalawang port ng parehong IP at inihambing ang response IP at oras, malalaman kung aling method ang mas mabilis sa iyong environment. Karaniwang pareho lang, pero maaaring magkaiba kapag malayo ang target server o mabagal ang DNS lookup.
Dapat pareho ang response IP sa parehong method. Kung iba, baka naghalo-halo ang mga port mula sa iba't ibang line, kaya pakidouble-check ang listahan.
for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
curl -s -m 15 -x "$p" -w " %{time_total}s\n" https://api.ipify.org
donePaano tinitignan ng server ang IP para sa IP authorization?
Ang value na irerehistro para sa IP authorization ay ang public IPv4 na ginagamit ng server mo para makapag-internet. Pwede mong makita ito sa pamamagitan ng pag-run ng 'curl -4 https://api.ipify.org' nang walang proxy. I-register ang value na ito sa IP authorization field ng dashboard para makakonekta ang server nang walang username at password.
curl -4 -s https://api.ipify.orgMaaari bang makita ng proxy ang mga nilalaman ng HTTPS site?
Kapag nag-request ng HTTPS address gamit ang HTTP proxy, gumagawa muna ang cURL ng CONNECT tunnel papunta sa target server, pagkatapos ay direktang nagtatatag ng encrypted connection sa target server sa loob ng tunnel. Alam lamang ng proxy kung saang server ito kumokonekta, at ang mga nilalaman ay naka-encrypt at hindi makikita. Gamitin ang -v option para makita ang CONNECT stage at ang kasunod na encrypted connection process.
Pareho rin sa SOCKS5. Ang proxy ay nagpapadala ng koneksyon mismo, habang ang encryption ay nangyayari sa pagitan ng cURL at target server. Kaya mas ligtas na huwag gumamit ng certificate verification option (-k). Dahil kahit dumaan sa proxy, ang certificate ng target server ay na-verify pa rin.
Kapag ginamit ang --socks5-hostname, kinukumpirma rin ng proxy ang domain name na iyong kinokonektahan, kaya hindi ito makikita sa DNS request log ng iyong server.
curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"Paano basahin ang cURL error message?
Ang Received HTTP code 407 from proxy after CONNECT ay nangangahulugang pagkabigo sa pag-authenticate. Suriin ang username at password, o ang server IP na rehistrado sa IP authorization. Kung ang password ay may @ o :, huwag itong ilagay sa loob ng address, gamitin ang -U o --proxy-user.
Ang Failed to connect o Connection timed out ay maaaring sanhi ng hindi tugmang port o firewall ng iyong server na nagbabawal sa mga koneksyon palabas. Gamitin ang HTTP port para sa HTTP address at SOCKS5 port para sa SOCKS5, at siguraduhing bukas ang port palabas. Ang pagdaragdag ng -v option ay nagpapakita ng proseso ng koneksyon sa bawat hakbang, na nagpapadali sa paghahanap ng sanhi.