--proxy-server के अंदर क्रेडेंशियल
Chrome उस आर्ग्युमेंट से यूज़रनेम और पासवर्ड बिना किसी error के हटा देता है, उनके बिना कनेक्ट होता है और प्रॉक्सी से 407 पाता है। फिर पेज लोड नहीं होता, जो ऑथेंटिकेशन की नहीं, नेटवर्क की समस्या जैसा दिखता है।
Selenium के तहत Chrome या Firefox को एक स्टैटिक ISP पते से चलाएँ। इस पेज का हर सैंपल पब्लिश करने से पहले एक लोकल प्रॉक्सी पर चलाकर देखा गया, और जो काम नहीं आया, वह साफ़ बताया गया है।
संक्षेप में: Chrome में
--proxy-server=http://HOST:PORTको आर्ग्युमेंट के रूप में दें; Firefox में options पर एक मैनुअल Proxy सेट करें। Firefox, Selenium के WebDriver BiDi हैंडलरadd_authentication_handlerके ज़रिए प्रॉक्सी के पासवर्ड प्रॉम्प्ट का जवाब दे सकता है। हमारे टेस्ट में Chrome ऐसा नहीं कर पाया: वह--proxy-serverमें क्रेडेंशियल को अनदेखा करता है, और दोनों BiDi हैंडलर का समय खत्म हो गया। Chrome के लिए, जिस IP से आपके टेस्ट चलते हैं उसे प्रॉक्सी की व्हाइटलिस्ट में डालें, और प्रॉक्सी को HTTP या SOCKS5 पर किसी क्रेडेंशियल की ज़रूरत नहीं रहती।
Selenium खुद ट्रैफ़िक रूट नहीं करता: वह एक ब्राउज़र शुरू करता है और प्रॉक्सी को ब्राउज़र के options के हिस्से के रूप में उसे सौंप देता है। इसीलिए Chrome और Firefox में जवाब अलग है, और इसीलिए प्रॉक्सी ऑथेंटिकेशन वह जगह है जहाँ ज़्यादातर सेटअप फ़ेल होते हैं।
Chrome प्रॉक्सी को कमांड-लाइन स्विच से पढ़ता है, Firefox अपने options पर एक प्रॉक्सी ऑब्जेक्ट से। दोनों व्हाइटलिस्ट वाली प्रॉक्सी को बिना किसी और सेटअप के स्वीकार करते हैं; Firefox WebDriver BiDi के ज़रिए प्रॉक्सी के पासवर्ड प्रॉम्प्ट का जवाब भी दे सकता है, जो हमारे टेस्ट में Chrome ने नहीं किया।
मशीन या CI runner का वह पता जो इंटरनेट को दिखता है, उसका लोकल पता नहीं। What Is My IP इसे दिखाता है।
एक API कॉल, PUT /orders/ORDER_ID/whitelist, या MCP सर्वर का set_proxy_whitelist टूल; डैशबोर्ड में इसके लिए अभी कोई कंट्रोल नहीं है। व्हाइटलिस्ट IPv4 पते लेती है और हर बार सूची को बदल देती है। जब तक व्हाइटलिस्ट सेट है, प्रॉक्सी सिर्फ़ सूची में दिए पतों को आने देती है और उस ऑर्डर के लिए यूज़रनेम और पासवर्ड काम करना बंद कर देते हैं; खाली सूची भेजने से व्हाइटलिस्ट बंद हो जाती है और पासवर्ड से लॉगिन फिर काम करने लगता है।
मेरे प्रॉक्सी से या API से। व्हाइटलिस्ट लगी होने पर यूज़रनेम और पासवर्ड की ज़रूरत नहीं है।
Chrome: --proxy-server=http://HOST:PORT, या प्रॉक्सी को SOCKS5 पर स्विच करने के बाद socks5://HOST:PORT. Firefox: httpProxy और sslProxy के साथ एक मैनुअल Proxy.
चलाए जा रहे ब्राउज़र में एक बार What Is My IP लोड करें और पक्का करें कि वह आपका खरीदा हुआ पता दिखाता है, फिर पूरा सुइट चलाएँ।
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent: Chrome ignores them in --proxy-server anyway.
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless=new") # remove to watch the browser
options.add_argument("--proxy-server=http://HOST:PORT")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://example.com/")
print(driver.title)
finally:
driver.quit()
# Selenium 4.51+ with WebDriver BiDi; pip install selenium
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
options = webdriver.FirefoxOptions()
options.enable_bidi = True
options.add_argument("-headless") # remove to watch the browser
options.proxy = Proxy({
"proxyType": ProxyType.MANUAL,
"httpProxy": "HOST:PORT",
"sslProxy": "HOST:PORT",
})
driver = webdriver.Firefox(options=options)
try:
# Answers the proxy's 407 with your username and password
driver.network.add_authentication_handler(
lambda request: request.provide_credentials("USERNAME", "PASSWORD")
)
driver.get("https://example.com/")
print(driver.title)
finally:
driver.quit()
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent. For a password instead, see selenium-firefox-auth.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
options = webdriver.FirefoxOptions()
options.add_argument("-headless") # remove to watch the browser
options.proxy = Proxy({
"proxyType": ProxyType.MANUAL,
"httpProxy": "HOST:PORT",
"sslProxy": "HOST:PORT",
})
driver = webdriver.Firefox(options=options)
try:
driver.get("https://example.com/")
print(driver.title)
finally:
driver.quit()
# Switch the proxy to SOCKS5 first, then use the port the order shows.
# The whitelist applies to SOCKS5 as well, so no credentials here either.
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless=new") # remove to watch the browser
options.add_argument("--proxy-server=socks5://HOST:PORT")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://example.com/")
print(driver.title)
finally:
driver.quit()
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"whitelisted_ips": ["YOUR_IP"]}'
Firefox पासवर्ड वाला सैंपल यूज़रनेम और पासवर्ड भेजता है, इसलिए उसके लिए ऐसा ऑर्डर चाहिए जिस पर कोई व्हाइटलिस्ट सेट न हो। बाकी ब्राउज़र सैंपल मानकर चलते हैं कि आपकी मशीन का IP प्रॉक्सी की व्हाइटलिस्ट में है; SOCKS5 वाले के लिए पहले प्रॉक्सी को SOCKS5 पर स्विच करना भी ज़रूरी है, जिससे नया port मिलता है। बड़े अक्षरों वाली वैल्यू की जगह अपने ऑर्डर की वैल्यू डालें, और व्हाइटलिस्ट कॉल में ORDER_ID, YOUR_API_KEY और YOUR_IP बदलें।
| HTTP प्रॉक्सी | SOCKS5 प्रॉक्सी | यूज़रनेम और पासवर्ड | |
|---|---|---|---|
| Chrome | --proxy-server=http://HOST:PORT | --proxy-server=socks5://HOST:PORT | --proxy-server में अनदेखा; व्हाइटलिस्ट इस्तेमाल करें |
| Firefox | httpProxy और sslProxy के साथ Proxy | socksProxy और socksVersion 5 के साथ Proxy | HTTP पर add_authentication_handler (BiDi) से काम कर गया |
| Chrome, BiDi हैंडलर | add_auth_handler और add_authentication_handler दोनों का समय खत्म हो गया | जाँचा नहीं गया | जब तक Selenium या Chrome का कोई बाद का वर्शन इसे न बदले, व्हाइटलिस्ट इस्तेमाल करें |
Chrome उस आर्ग्युमेंट से यूज़रनेम और पासवर्ड बिना किसी error के हटा देता है, उनके बिना कनेक्ट होता है और प्रॉक्सी से 407 पाता है। फिर पेज लोड नहीं होता, जो ऑथेंटिकेशन की नहीं, नेटवर्क की समस्या जैसा दिखता है।
जब Firefox के options में प्रॉक्सी होती है, तो Selenium Manager ड्राइवर को उसी प्रॉक्सी से डाउनलोड करता है। सिर्फ़ पासवर्ड वाली प्रॉक्सी पर यह डाउनलोड ब्राउज़र शुरू होने से पहले ही फ़ेल हो जाता है; व्हाइटलिस्ट के साथ यह सफल होता है।
CI runner अक्सर आपके लैपटॉप से अलग पब्लिक IP से निकलता है, और कुछ runner हर रन पर बदल जाते हैं। उस पते को व्हाइटलिस्ट करें जिससे टेस्ट चलते हैं, और जब वह बदले तो उसे अपडेट करें, क्योंकि हर कॉल सूची को बदल देती है।
HTTP पर सेट पता SOCKS5 का जवाब नहीं देता। पहले अपने ऑर्डर पर प्रॉक्सी स्विच करें और उसके बाद दिखने वाला port इस्तेमाल करें; सिर्फ़ आर्ग्युमेंट में scheme बदलने से ऐसा ब्राउज़र मिलता है जो कनेक्ट नहीं हो पाता।
Firefox में WebDriver BiDi चालू करें और driver.network.add_authentication_handler से एक हैंडलर रजिस्टर करें जो यूज़रनेम और पासवर्ड दे; Selenium 4.51 के साथ यह तरीका काम कर गया। Chrome में हमारे टेस्ट में क्रेडेंशियल भेजने वाला कोई भी तरीका काम नहीं आया: वह प्रॉक्सी स्विच में उन्हें अनदेखा करता है, और दोनों BiDi हैंडलर का समय खत्म हो गया। Chrome के लिए वह पब्लिक IP व्हाइटलिस्ट करें जिससे आपके टेस्ट चलते हैं, और ब्राउज़र बिना किसी क्रेडेंशियल के कनेक्ट होता है।
ChromeOptions बनाएँ, आर्ग्युमेंट --proxy-server=http://HOST:PORT जोड़ें, और options को webdriver.Chrome को दें। SOCKS5 के लिए अपने ऑर्डर पर प्रॉक्सी को SOCKS5 पर स्विच करें और उसके बाद ऑर्डर जो port दिखाए, उसके साथ socks5://HOST:PORT इस्तेमाल करें।
हाँ। व्हाइटलिस्ट वाला पता HTTP पर और SOCKS5 पर बिना क्रेडेंशियल के स्वीकार होता है, और इसी से Chrome में SOCKS5 इस्तेमाल हो पाता है, क्योंकि Chrome SOCKS5 यूज़रनेम और पासवर्ड नहीं भेज सकता। व्हाइटलिस्ट API या MCP सर्वर से सेट होती है और IPv4 पते लेती है। SOCKS5
हाँ, हर ड्राइवर पर एक: प्रॉक्सी उन options का हिस्सा है जिनसे ड्राइवर शुरू होता है, इसलिए दो ड्राइवर दो पते इस्तेमाल कर सकते हैं। चल रहे Chrome की प्रॉक्सी बदलना संभव नहीं है; इसकी जगह नया ड्राइवर शुरू करें।
नहीं। ड्राइवर जिस पते से शुरू हुआ, वही पता बंद होने तक रखता है, और खुद पता पूरी बिलिंग अवधि तक आपके नाम रहता है। जिन सुइट को एक साथ कई स्रोत चाहिए, उन्हें ऐसा पूल चाहिए जो पते बदलता हो, और वह अभी बिक्री पर नहीं है।
अपने प्रोडक्ट के एंड-टू-एंड टेस्ट, अपने स्टोरफ़्रंट की क्षेत्रीय जाँच, विज्ञापन सत्यापन, कीमत रिसर्च और ब्रांड सुरक्षा, ये सब हमारी स्वीकार्य उपयोग नीति के तहत बिना पूर्व समीक्षा के चलते हैं। CAPTCHA, बॉट से बचाव, रेट लिमिट या अकाउंट बैन को हराने के लिए ब्राउज़र चलाना अलग बात है: पता ऐसा नहीं करता, और नीति इसकी कोशिश पर रोक लगाती है। स्वीकार्य उपयोग नीति
--proxy-server स्विच और उसके scheme