# curl กับพร็อกซี HTTP และ SOCKS5: ตัวอย่างคัดลอกและวาง

> ตัวอย่าง curl proxy: -x และ -U, SOCKS5 ด้วย --socks5-hostname, การเชื่อมต่อแบบติดหนึบ, เช็คสถานะ CONNECT และเก็บเวลาด้วย -w, curl.exe บน Windows

- URL: https://crawlrelay.com/th/docs/curl/
- อัปเดตล่าสุด: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

curl เป็นวิธีทดสอบข้อมูลรับรอง เป้าหมาย และเวลาได้เร็วที่สุดก่อนที่คุณจะใช้สแครบเบอร์ ทุกคำสั่งด้านล่างทำงานได้ทันทีเมื่อคุณแทนที่ USERNAME และ PASSWORD

**คำตอบด่วน — ฉันจะใช้พร็อกซีกับ curl อย่างไร?**

ใช้ `curl -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://api.ipify.org` สำหรับพร็อกซี HTTP หรือใช้ `--socks5-hostname gw.crawlrelay.com:7778` กับ `-U USERNAME:PASSWORD` สำหรับ SOCKS5 **พร็อกซีเรซิเดนเชียล** CrawlRelay ต้องระบุประเทศและเชื่อมต่อแบบติดหนึบในชื่อผู้ใช้งาน เช่น `USERNAME-country-de-session-t1-ttl-10` เริ่มต้นจาก US$0.50/GB จ่ายด้วยคริปโต ไม่ต้อง KYC

## ฟลัก curl ที่คุณต้องใช้

| คุณลักษณะ | ค่า |
| --- | --- |
| `-x` / `--proxy` | Proxy URL: `http://host:port` ใส่ข้อมูลรับรองเพื่อใช้งานได้ตามต้องการ |
| `-U` / `--proxy-user` | ข้อมูลรับรองพร็อกซีในรูปแบบ `USERNAME:PASSWORD` ไม่รวมอยู่ใน URL |
| `--socks5-hostname` | พร็อกซี SOCKS5 ที่แก้ไข DNS ที่ทางออก |
| `-v` | แสดงการแลกเปลี่ยน CONNECT และบรรทัดสถานะของพร็อกซี |
| `-w` | พิมพ์เวลาที่ใช้ ขนาดและ `%{http_connect}` สถานะ CONNECT ของพร็อกซี |
| `--max-time`, `--connect-timeout` | เวลาเต็มและเวลาจำกัดของการเชื่อมต่อ เป็นวินาที |

## คำสั่งพร็อกซีพื้นฐานมีอะไรบ้าง?

แต่ละคำสั่งจะแสดง IP ทางออกที่เว็บไซต์เห็น

*พร็อกซี HTTP แบบหมุน แล้วตามด้วยแบบเจาะจงและแบบคงที่*

```bash
# Rotating exit, any country
curl -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://api.ipify.org

# Country and city (city availability varies)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-city-chicago:PASSWORD https://api.ipify.org

# Sticky: run it twice, the IP stays the same for up to 10 minutes (it can change earlier)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-de-session-t1-ttl-10:PASSWORD https://api.ipify.org

# SOCKS5, DNS resolved at the exit
curl --socks5-hostname gw.crawlrelay.com:7778 -U USERNAME-country-gb:PASSWORD https://api.ipify.org
```

## จะดีบักการเชื่อมต่อพร็อกซีด้วย curl อย่างไร?

รันด้วย `-v` และอ่านบรรทัดรอบ ๆ `CONNECT` ช่องทางที่ใช้งานได้จะแสดง `HTTP/1.1 200 Connection established` แล้วจึงเป็นการจับมือ TLS กับเว็บไซต์ สถานะอื่นในบรรทัดนั้นมาจากพร็อกซี เช่น 407 หมายถึงข้อมูลรับรอง 502 หรือ 504 หมายถึงทางออกหรือเป้าหมาย รูปแบบ `-w` ด้านล่างพิมพ์ข้อมูลเดียวกันในบรรทัดเดียว เหมาะสำหรับการวนลูปและตรวจสอบ CI

*CONNECT อย่างละเอียดและรายงานเวลาบรรทัดเดียว*

```bash
# Full exchange, including the proxy's answer to CONNECT
curl -v -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://example.com/ -o /dev/null

# One line: proxy CONNECT status, HTTP status, compressed bytes and timings
curl -s --compressed -o /dev/null -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD \
  -w 'connect=%{http_connect} http=%{http_code} bytes=%{size_download} tcp=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n' \
  https://example.com/
```

## จะตรวจสอบว่าการหมุนและเซสชันทำงานได้อย่างไร?

ร้องขอ IP หลายครั้ง หากไม่มี session ID ทุกครั้งจะเป็นการเชื่อมต่อใหม่และมักแสดง IP ที่ต่างกัน หากมี session ID IP ควรคงที่จนกว่า TTL จะหมด แม้อาจเปลี่ยนก่อนหน้านั้นได้

*การหมุน vs คงที่ในลูป shell*

```bash
echo "rotating:"
for i in 1 2 3 4 5; do
  curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD https://api.ipify.org; echo
done

echo "sticky:"
for i in 1 2 3 4 5; do
  curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-session-loop1-ttl-5:PASSWORD https://api.ipify.org; echo
done
```

## จะใช้ curl กับพร็อกซีบน Windows ยังไง?

เรียก `curl.exe` ไม่ใช่ `curl` ใน Windows PowerShell 5.1 `curl` เป็นนามแฝงของ `Invoke-WebRequest` ซึ่งไม่รองรับ `-x` หรือ `-U` Windows 10 และ 11 ติดตั้ง curl ของแท้เป็น `curl.exe` ใน PowerShell ให้ใส่เครื่องหมายคำพูดกับอาร์กิวเมนต์ที่มีตัวอักษรพิเศษ และเขียน `$` เป็นตัวอักษรในรหัสผ่านภายในเครื่องหมายคำพูดเดี่ยว

*PowerShell*

```powershell
curl.exe -x http://gw.crawlrelay.com:7777 -U 'USERNAME-country-fr:PASSWORD' https://api.ipify.org
```

## จะตั้งพร็อกซีเพียงครั้งเดียวสำหรับทุกคำสั่งอย่างไร?

curl อ่านตัวแปรสภาพแวดล้อม `https_proxy` และ `http_proxy` และเครื่องมืออื่น ๆ ก็อ่านด้วย ตั้งค่าพวกนี้สำหรับเซสชัน shell และใช้ `NO_PROXY` สำหรับโฮสต์ที่ไม่ต้องผ่านพร็อกซี เช่น API ของคุณเอง หลีกเลี่ยงการใส่รหัสผ่านในตัวแปรที่ส่งต่อไปยังทุกโปรเซสลูกบนเครื่องที่ใช้ร่วมกัน

*ตัวแปรสภาพแวดล้อม (bash, zsh)*

```bash
export https_proxy="http://USERNAME-country-us:PASSWORD@gw.crawlrelay.com:7777"
export http_proxy="$https_proxy"
export NO_PROXY="localhost,127.0.0.1,.internal.example"

curl https://api.ipify.org   # now uses the proxy
unset https_proxy http_proxy # back to direct
```

## คำถามเกี่ยวกับ curl และพร็อกซี

### ต่างกันอย่างไรระหว่าง --socks5 กับ --socks5-hostname?

ด้วย `--socks5` curl จะแก้ไขชื่อโฮสต์บนเครื่องของคุณเองและส่ง IP ไปยังพร็อกซี ด้วย `--socks5-hostname` curl ส่งชื่อโฮสต์และพร็อกซีจะเป็นฝ่ายแก้ไขชื่อ ใช้ `--socks5-hostname` สำหรับการสแครปเพื่อให้คำตอบ DNS ตรงกับประเทศทางออก และตัวแก้ไขชื่อเครื่องคุณจะไม่เห็นโดเมนที่คุณดึงข้อมูล

### ทำไม curl ถึงบอกว่า 'CONNECT tunnel failed, response 407'?

พร็อกซีปฏิเสธข้อมูลรับรอง หรือไม่ได้รับเลย ตรวจสอบชื่อผู้ใช้และรหัสผ่าน และเข้ารหัส URL ตัวอักษรพิเศษถ้าอยู่ใน URL `-x` หรือส่งผ่าน `-U` แทน หน้า [407](https://crawlrelay.com/th/docs/errors/407-proxy-authentication-required/) อธิบายสาเหตุอื่น ๆ

### จะดูจำนวนไบต์ที่หน้าเว็บใช้ผ่านพร็อกซีอย่างไร?

เพิ่ม `--compressed -o /dev/null -w '%{size_download}\n'` `--compressed` ทำให้ curl ขอ gzip หรือ brotli เหมือนกับที่สแครปเปอร์ของคุณใช้ และ `%{size_download}` จากนั้นนับจำนวนไบต์ที่บีบอัดที่ส่งผ่านเครือข่าย ถ้าไม่ใส่เซิร์ฟเวอร์จะส่งหน้าเว็บแบบไม่บีบอัดและตัวเลขจะสูงกว่าหลายเท่า ทดสอบกับหน้าจริงหลายหน้าเพื่อประมาณการปริมาณข้อมูลต่อ 1,000 หน้า

### curl ใช้ HTTP/2 หรือ HTTP/3 ผ่านพร็อกซีได้ไหม?

HTTP/2 ใช้งานได้ในช่องทาง CONNECT เมื่อเว็บไซต์รองรับ เพราะช่องทางนี้ส่ง TLS แบบ end-to-end HTTP/3 ใช้ UDP ซึ่งช่องทาง CONNECT ผ่านพร็อกซี HTTP ไม่รองรับ ดังนั้นควรใช้ HTTP/2 หรือ HTTP/1.1 ผ่านเกตเวย์แทน

**ทดสอบเป้าหมายของคุณจากบรรทัดคำสั่ง** US$1.50 สำหรับ 1 GB เพียงพอสำหรับทดสอบ curl เป็นพันครั้ง [เลือก 1 GB](https://crawlrelay.com/app/checkout/?plan=res-1&product=residential&lang=th) · [อ้างอิงข้อผิดพลาด](https://crawlrelay.com/th/docs/errors/)

---

CrawlRelay: CrawlRelay คือพร็อกซีเรซิเดนเชียลหมุนเวียนพร้อมพร็อกซีมือถือ 4G/5G สำหรับนักพัฒนา เหมาะกับสแครปเปอร์และระบบจัดการข้อมูล AI: เติมเงินจ่ายตามการใช้งานจาก US$0.50/GB จ่ายด้วยคริปโต ไม่ต้องอัปโหลดบัตรประชาชน ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
