Hızlı cevap
Konut proxy ile 407 Proxy Authentication Required ne anlama gelir?
407 Proxy Authentication Required vekil, kimlik bilgilerinizi almadığı veya yanlış olduğu için isteğinizi reddetti demektir. Hedef site asla aranmadı. CrawlRelay yerleşik proxylerinde üç şeyi kontrol edin: kullanıcı adının kontrol panelinizde görünen olduğundan emin olun, şifre eşleşiyor mu ve her ikisinde de bulunan özel karakterlerin URL kodlaması yapıldı mı. Aynı isteği tekrar denemek 407’yi asla düzeltemez.
407 Proxy Authentication Required hızlı bakış
| Hata | 407 Proxy Authentication Required |
|---|---|
| Tür | HTTP durum kodu (4xx, istemci hatası) |
| Gönderen | Vekil sunucu kapısı, hedef web sitesi değil |
| Tanımlandığı yer | RFC 9110, section 15.5.8 (headers: Proxy-Authenticate 11.7.1, Proxy-Authorization 11.7.2) |
| Tekrar denemek ister misiniz? | Hayır. Aynı kimlik bilgileri tekrar başarısız olur; önce onları düzeltin |
| İlk kontrol | Aşağıdaki curl testini çıplak kullanıcı adı ve hedefleme parametreleri olmadan çalıştırın |
407 Proxy Authentication Required ne anlama gelir?
407 vekilden gelir, ulaşmak istediğiniz site değil. RFC 9110 bunu vekilin 401 versiyonu olarak tanımlar: istemci vekille kimlik doğrulaması yapmadan hiçbir şey olmaz. Vekil, kabul ettiği şemayı adlandıran Proxy-Authenticate başlığı gönderir, hemen hemen her zaman Basic şemasıdır. İstemciniz, Base64 ile şifrelenmiş username:password taşıyan Proxy-Authorization başlığıyla yanıt verir.
HTTPS hedefi için 407, tüneli açan CONNECT isteğine karşılık gelir. Bu yüzden birçok kütüphane bunu HTTP durumu olarak değil, tünel ya da bağlantı hatası olarak raporlar: TLS oturumu hiç başlamamıştır.
Python, curl, Node.js ve tarayıcılarda a 407 nasıl görünür?
Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:
- 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_FAILEDveya görünür bir tarayıcıda oturum açma penceresi - Node.js istemcileri http:// hedefinde:
Request failed with status code 407
a 407 neden olur?
Öncelikle en olası sebep:
- Yanlış kullanıcı adı veya şifre. Yazım hatası, sıfırlama sonrası eski şifre veya başka bir alt kullanıcının kimlik bilgileri.
- Kodlanmamış özel karakterler. Şifrede
@,:,/veya#olmasıuser:pass@hostURL'sini bozar. Yüzde kodlama yapın:@,%40olur;:,%3Aolur. - Bozuk hedef eki. Vekil kullanıcı adından hedeflemeyi okuyan kapılar, tek uzun kullanıcı adı görür. Anahtarda veya ülke kodunda yazım hatası vekilin bilmediği kullanıcı adına dönüşür.
- Kodunuzda hiç çıkmayan kimlik bilgileri. Chrome
--proxy-serveriçinde yazılan kullanıcı adı ve şifreyi yoksayar. Puppeteerpage.authenticate()gerektirir, Selenium ise yerel bir proxy gerektirir. - Boş bakiye. Kodu hata ayıklamadan önce hesabınızda trafik kaldığını kontrol edin.
a 407 nasıl adım adım teşhis edilir?
- Kimlik bilgilerini curl ile tamamen hedefleme olmadan test edin (aşağıdaki komut). Ayrıntılı çıktıdaki
HTTP/1.1 407satırı bir kimlik bilgisi sorunu olduğunu doğrular. - Hedef parametrelerinizi tek tek geri ekleyin, her eklemeden sonra testi tekrarlayın.
- Programınızın gerçek oluşturduğu vekil URL'sini şifre gizli şekilde kaydedin ve karakter karakter kontrol panelindekilerle karşılaştırın.
- Curl başarılı, program başarısızsa, kütüphane kimlik bilgilerini göndermiyordur. Aşağıdaki aracınıza yönelik çözümü okuyun.
# 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_URLa 407 nasıl düzeltilir?
- Python'da
urllib.parse.quote(value, safe='')ile veya JavaScript’teencodeURIComponent()ile kimlik bilgilerini URL oluşturulmadan önce kodlayın. - Tarayıcılar: Playwright’ta
proxyseçeneğineusernamevepasswordgeçin, Puppeteer’dapage.authenticate()çağırın, Selenium için yerel bir proxy kullanın. Playwright] ve Puppeteer] kılavuzlarını inceleyin. - Ortam değişkenleri:
HTTPS_PROXYayarlarsanız, tüm değeri kabuğunuzda tırnak içinde yazın ki@ve$kaybolmasın. - Şüpheleniyorsanız pano şifresini döndürün ve ardından kullanan tüm kazıyıcıları güncelleyin.
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()a 407 sonrası tekrar denenmeli mi?
407 otomatik tekrar denemesi yapmayın. Aynı kimliklerle tekrar denemek aynı cevabı verir ve sık tekrar kayıtlara sadece yük bindirir. 407’yi yapılandırma hatası olarak görün: işi durdurup kimlik bilgilerini düzeltin ve yeniden başlatın. Günlerce çalışan işte aniden 407 varsa şifre muhtemelen değişmiştir veya alt kullanıcı devre dışı bırakılmıştır.
407 Proxy Authentication Required CrawlRelay için nasıl geçerli?
CrawlRelay kapısı her yeni bağlantıda kullanıcı adı ve şifreyi okur. Hedefleme ve oturum ayarları kullanıcı adında olduğundan, geçerli bir parola yine de bozuk ekle başarısız olabilir. Kullanıcı adını tek yardımcı fonksiyonda oluşturun ve başlatmada çıktısını bir kere kaydedin. Hızlı başlangıç sayfası] tam formatı gösterir.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. İlgili: 401 vs 407 · ERR_TUNNEL_CONNECTION_FAILED · Proxy’ye bağlanamıyor.
407 Proxy Authentication Required: geliştiricilerin sorduğu sorular
Bana veri kazıdığım web sitesi 407 gönderiyor mu?
Hayır. 407 her zaman siz ile web sitesi arasında duran bir vekilden gelir. İstek siteye asla ulaşmaz, bu yüzden trafik görüntüleyemez, sayamaz veya engelleyemez. Site oturum açma isteseydi 401 cevabı verirdi. Vekil kimlik bilgilerini düzeltin, 407 kaybolacaktır.
Neden curl aynı proxy ile çalışırken kodum 407 alıyor?
Kütüphaneniz kimlik bilgilerini göndermiyor ya da farklı bir biçimde gönderiyor. Genellikle kimlik bilgileri gözardı edilen bir tarayıcı bayrağına girilmiş, özel karakterler yitirilmiş ortam değişkeni veya URL kodlanmamış şifredir. Programınızın oluşturduğu vekil URL’sini şifre gizli şekilde yazdırın ve curl ile karşılaştırın.
407, planımdaki trafik hakkını kullanıyor mu?
407 yanıtı birkaç yüz bayttır ve istek hedefe asla ulaşmaz, sayfa indirilmez. Masraf başka yerde: 407 tekrar döngüsünde sıkışan kazıyıcı zaman harcar ve loglarınızı doldurur. 407’yi hata işleme sürecinizde kesme noktası yapın.
Bu referanstaki diğer proxy hataları
HTTP durum kodları
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Tarayıcı ve istemci hataları
Bağlantı ve TLS hataları
Başarısızlık durumları için dokümanlı konut proxy'ler
$0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy