Jawaban cepat
Apa arti 407 Proxy Authentication Required dengan proxy?
407 Proxy Authentication Required berarti proxy menolak permintaan Anda karena tidak menerima kredensial atau kredensial salah. Situs target tidak pernah dihubungi. Dengan proxy residential CrawlRelay, periksa tiga hal: username adalah yang tertera di dashboard Anda, password sesuai, dan karakter khusus di keduanya sudah dienkode URL. Mengulangi permintaan yang sama tidak akan memperbaiki 407.
407 Proxy Authentication Required sekilas
| Kesalahan | 407 Proxy Authentication Required |
|---|---|
| Tipe | Kode status HTTP (4xx, kesalahan klien) |
| Dikirim oleh | Gerbang proxy, bukan situs target |
| Didefinisikan dalam | RFC 9110, section 15.5.8 (headers: Proxy-Authenticate 11.7.1, Proxy-Authorization 11.7.2) |
| Mencoba lagi? | Tidak. Kredensial yang sama akan gagal lagi; perbaiki terlebih dahulu |
| Periksa pertama | Jalankan tes curl di bawah ini dengan username polos tanpa parameter targeting |
Apa arti 407 Proxy Authentication Required?
Kode 407 datang dari proxy, bukan dari situs yang Anda tuju. RFC 9110 menggambarkannya sebagai versi proxy dari 401: klien harus autentikasi ke proxy sebelum hal lain terjadi. Proxy mengirim header Proxy-Authenticate yang menyebutkan skema yang diterima, hampir selalu Basic. Klien Anda membalas dengan header Proxy-Authorization yang memuat username:password yang dienkode Base64.
Untuk target HTTPS, 407 muncul sebagai balasan atas permintaan CONNECT yang membuka tunnel. Itu sebabnya banyak pustaka melaporkan ini sebagai kesalahan tunnel atau koneksi, bukan status HTTP: sesi TLS ke situs tidak pernah dimulai.
Seperti apa a 407 dalam Python, curl, Node.js, dan browser?
Kegagalan yang sama dicetak berbeda di setiap alat. Ini adalah pesan yang perlu dicari di log Anda:
- Python requests:
ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required')) - curl:
curl: (56) CONNECT tunnel failed, response 407 - Scrapy:
TunnelError: Could not open CONNECT tunnel with proxy ... [{'status': 407, 'reason': b'Proxy Authentication Required'}] - Chrome, Playwright, Puppeteer:
net::ERR_TUNNEL_CONNECTION_FAILED, atau pop-up login di browser yang terlihat - klien Node.js pada target http://:
Request failed with status code 407
Apa penyebab a 407?
Kemungkinan besar pertama:
- Username atau password salah. Kesalahan ketik, password lama setelah reset, atau kredensial pengguna sub yang lain.
- Karakter khusus tidak dienkode. Password yang mengandung
@,:,/atau#akan merusak URLuser:pass@host. Enkode persen:@menjadi%40,:menjadi%3A. - Suffix targeting yang rusak. Gateway yang membaca targeting dari username melihat satu username panjang. Salah ketik di kunci atau kode negara mengubahnya menjadi username yang tidak dikenal proxy.
- Kredensial yang tidak pernah keluar dari kode Anda. Chrome mengabaikan username dan password yang ditulis di dalam
--proxy-server. Puppeteer perlupage.authenticate(), dan Selenium perlu forwarder lokal. - Saldo habis. Pastikan akun Anda masih punya traffic sebelum debug kode.
Bagaimana cara mendiagnosis a 407 langkah demi langkah?
- Uji kredensial dengan curl tanpa targeting sama sekali (perintah di bawah). Baris
HTTP/1.1 407di output verbose mengonfirmasi masalah kredensial. - Tambahkan parameter targeting satu per satu, jalankan ulang tes setelah masing-masing.
- Catat URL proxy yang program Anda bangun, password disamarkan, dan bandingkan karakter demi karakter dengan dashboard.
- Jika curl berhasil dan program Anda gagal, pustaka tidak mengirim kredensial. Baca perbaikan untuk alat Anda di bawah.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLBagaimana cara memperbaiki a 407?
- Enkode kredensial dengan
urllib.parse.quote(value, safe='')di Python atauencodeURIComponent()di JavaScript sebelum bangun URL. - Browser: berikan
usernamedanpassworddi opsi Playwrightproxy, panggilpage.authenticate()di Puppeteer, dan gunakan forwarder lokal untuk Selenium. Lihat panduan Playwright dan Puppeteer. - Variabel lingkungan: jika Anda set
HTTPS_PROXY, beri tanda kutip seluruh nilainya di shell agar@dan$tetap aman. - Ganti password di dashboard jika curiga bocor, lalu perbarui semua scraper yang menggunakannya.
from urllib.parse import quote
import requests
user = "USERNAME-country-us"
password = "p@ss:word/1" # example containing special characters
# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy} # http:// for both keys
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://gw.crawlrelay.com:7777",
"username": "USERNAME-country-us",
"password": "PASSWORD",
})
page = browser.new_page()
response = page.goto("https://api.ipify.org")
print(response.status, page.inner_text("body"))
browser.close()Haruskah saya mencoba lagi setelah a 407?
Jangan ulangi 407 secara otomatis. Mengulangi dengan kredensial sama mengembalikan jawaban sama, dan pengulangan ketat hanya memenuhi log Anda. Perlakukan 407 sebagai kesalahan konfigurasi: hentikan pekerjaan, perbaiki kredensial, mulai ulang. Jika 407 muncul tiba-tiba di pekerjaan yang berjalan berhari-hari, kemungkinan password diubah atau sub-user dinonaktifkan.
Bagaimana 407 Proxy Authentication Required berlaku untuk CrawlRelay?
Gerbang CrawlRelay membaca username dan password setiap koneksi baru. Targeting dan pengaturan sesi ada di username, jadi password valid tetap bisa gagal jika suffix salah format. Bangun username dalam satu fungsi pembantu dan catat hasilnya sekali saat start-up. Halaman quick-start menunjukkan format tepatnya.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS melalui CONNECT) dan port 7778 (SOCKS5). Format username: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Terkait: Perbandingan 401 vs 407 · ERR_TUNNEL_CONNECTION_FAILED · Tidak bisa konek ke proxy.
407 Proxy Authentication Required: pertanyaan yang sering ditanyakan pengembang
Apakah 407 dikirim oleh situs web yang saya scrape?
Tidak. 407 selalu dikirim oleh proxy di antara Anda dan situs web. Permintaan tidak pernah sampai ke situs, jadi situs tidak bisa melihat traffic Anda, menghitung atau memblokir Anda karenanya. Jika situs meminta login, maka jawabannya 401. Perbaiki kredensial proxy maka 407 hilang.
Mengapa kode saya dapat 407 sementara curl berhasil dengan proxy yang sama?
Pustaka Anda tidak mengirim kredensial, atau mengirimnya dalam format berbeda. Penyebab umum adalah kredensial diketik di flag browser yang mengabaikannya, variabel lingkungan kehilangan karakter khusus, atau password tidak dienkode URL. Cetak URL proxy kode Anda buat dengan password tersembunyi, dan bandingkan dengan perintah curl.
Apakah 407 memakai traffic dari paket saya?
Respons 407 beberapa ratus byte, dan permintaan tidak pernah sampai target, jadi halaman tidak diunduh. Biayanya ada di lain tempat: scraper yang terjebak dalam pengulangan 407 membuang waktu dan memenuhi log Anda. Jadikan 407 sebagai pemberhentian keras di penanganan kesalahan Anda.
Kesalahan proxy lain dalam referensi ini
Kode status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Kesalahan browser dan klien
Error koneksi dan TLS
Proxy residensial dengan dokumentasi yang membahas kasus kegagalan
Proxy residensial CrawlRelay dari US$0,50/GB, lalu lintas yang tidak pernah kedaluwarsa.