Какво ново
Една липсваща буква е напълно достатъчна. Напишете -contry-de в потребителското име за proxy и правописната грешка остава незабелязана, изглеждайки точно като работеща опция.
Proxy портът на FourA отговаря на това с грешка 400, която изброява всеки познат ключ. Това е малък детайл от продукт, който излезе от бета на 15 септември: proxy URL адрес на нашите изходи за всеки клиент, който приема такъв (браузър, инструмент за сваляне, scraper, който вече използвате), без да се налага да пишете API заявка. Създавате proxy потребител в Dashboard, поставяте низа, а тунелите и трафикът се отчитат към вашия план по същия начин, както и API заявките.
Ето пълната граматика и причината за всяко правило в нея.
Как работи
Портът се намира на proxy.foura.ai:34004 и поддържа HTTP CONNECT с Basic автентикация към цели на портове 443 и 80. Данните за достъп са отделни proxy потребители, умишлено разграничени от вашия API key: proxy handshake се предава в некриптиран вид, а на proxy потребител може да бъде зададена нова парола, без някой да променя вашата API интеграция.
Всичко след данните за достъп е списък от двойки -key-value в произволен ред:
# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
https://example.com
# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
https://example.com
Shared са собствените изходни точки на FourA: по подразбиране и включени във вашия план. Premium са домашни адреси, черпени от premium трафика на плана ви плюс допълнително закупения. В споделената мрежа -fallback-premium позволява на дадена връзка да се прехвърли към premium изходна точка, когато споделената не може да я обслужи. Опцията е изключена, освен ако не я заявите изрично, и се активира само докато има наличен premium лимит. Активирането ѝ по подразбиране би означавало да решим вместо вас да изразходваме този лимит.
Параметърът за държава може да се повтаря, така че -country-de-country-fr обхваща две държави. Регион, град, мрежа по AS номер, устройство (windows, android, ios, mac) и lifetime (от 3 до 1440 минути) са достъпни само за premium. Ако поискате град в споделената мрежа, получавате 400 вместо опит за изпълнение при възможност (best effort). За споделената мрежа се избира само държава и нищо по-детайлно, тъй като филтър по град, който в повечето случаи не може да бъде изпълнен, е по-лош от липсата на филтър.
-session-<name> (от 1 до 32 букви, цифри или долни черти) прави връзките постоянни (sticky): всяка връзка с това име използва един и същ адрес. При споделената мрежа адресът се запазва чрез плъзгащ се десетминутен прозорец, така че остава активен, докато продължавате да го ползвате. При premium мрежата той се запазва за зададеното от вас lifetime или според стойността по подразбиране за мрежата. Ако пропуснете сесията, всяка връзка излиза от нов адрес.
Съществуват и запазени настройки по подразбиране. Таргетирането, запазено за даден proxy потребител в Dashboard, се прилага за всяка негова връзка, така че низът може да се сведе само до идентификационните данни. Потребителското име все пак има предимство за собствената си връзка, а any връща запазената стойност: -city-any изисква ключ, който помни Мюнхен за цяла Германия. Клиенти, които могат да подават headers при CONNECT заявка (curl го може чрез --proxy-header), могат да изпращат същите опции като X-Foura-Country, X-Foura-Session и останалите, като header има предимство пред потребителското име.
Резултат
Повечето от това премахва въпроси, които вече няма нужда да задавате.
Защо заявката ми беше отхвърлена? Всеки отказ след проверка на идентификационните данни съдържа header X-Foura-Error с едноредово обяснение. Грешка 400 посочва конкретната опция и допустимите стойности. Грешка 429 показва кой от лимитите на плана си сте достигнали: едновременно отворени тунели, отваряния на тунели за минута или стандартен трафик за отчетния период.
Чий е лимитът? На акаунта. Тунелите и отварянията се отчитат за целия акаунт, а не за отделен proxy потребител, така че втори набор от данни за достъп не носи допълнителен лимит. Байтовете се броят към трафика на плана ви, а premium байтовете към вашия premium лимит в рамките на тази обща сума, без да се добавят допълнително към нея. При план с кредити портът разполага със собствени включени гигабайти, които се презареждат от страницата Billing. Нищо не се отчита, когато няма отворен тунел.
Кой притежава идентификационните данни? Вече това може да бъде организация, така че автоматичният процес за сваляне на данни на дадена компания не спира в деня, в който един служител напусне. Членовете ги използват и четат паролата; администраторите и собствениците ги пренастройват, деактивират или пренасочват; само собственикът може да ги прехвърли извън организацията.
Какво направи това? Превключете превключвателя Product в Overview, Metrics или Activity на Proxy: тунели в същите класове резултати като вашите API заявки, колко са отворени в момента, време за настройка и трафик, разделени по proxy потребител, цел, държава на изход или IP на клиента. Сесия, която вече има своя адрес, обикновено се свързва за доста под секунда.
Но портът е просто канал и това е компромисът. Вашият клиент комуникира със сайта през тунела, така че профилите на браузъра, вашите validate rules и обработката на интерактивни страници не са по този път. Той също така отчита байтове: страница за отказ, която идва през отворен тунел, са байтове като всички останали, докато при API заявка, която не успее, не се таксува. Прехвърляйте байтове през порта; изпращайте страниците, които оказват съпротива, към API.
За напреднали потребители
След като премиум лимитът бъде изразходван, трите маршрута към тази мрежа получават три различни отговора, напълно умишлено. Връзка, която изрично посочва -network-premium, се отхвърля с грешка 403, която посочва причината, тъй като извикващ клиент, който бива обслужван тихо от друго място, би продължил да изпраща заявки, а след това да търси в сметката премиум ред, който така и не се появява. Вариантът за fallback просто не се използва, а премиум настройката по подразбиране, записана за proxy потребителя, преминава към споделената мрежа, така че тунелът все пак се отваря. Нито един от тези случаи не е избрал да харчи за тази връзка.
Три комбинации се отхвърлят директно, вместо да бъдат изпълнени частично: по-прецизно таргетиране в споделената мрежа, -fallback-premium заедно с -network-premium, както и по-прецизно таргетиране, докато е активиран fallback. Портът поддържа само CONNECT, така че клиент, който препраща обикновена http:// заявка вместо да я тунелира, получава 405 (curl я тунелира с --proxytunnel). А браузър, управляван през порта, винаги трябва да носи име на сесия, тъй като зареждането на една страница отваря десетки връзки.
Няколко worker процеса, всеки на собствен адрес? Задайте на всеки от тях собствено име на сесия:
import requests
TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"
def worker_session(name):
proxy = TEMPLATE.format(name=name)
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
return s
workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)
Dashboard прави същото в голям мащаб: задайте Sticky, изберете колко броя и табът Connection string извежда по един ред за всеки адрес, като URL или като host:port:user:pass за proxy мениджъри. Озадачени сте от отказ? Добавете -sv към curl заявката и пренасочете към 2>&1 | grep -i x-foura-error. Всяка опция е описана в proxy port reference, а конфигурацията от страна на Dashboard е в Proxy Users.
Какво следва
Първият клиент, който изградихме върху proxy users, е наш собствен. Разширението FourA Chrome extension прекарва браузъра ви през един от тях: избирате мрежата и държавата, включвате превключвателя и статус ред показва адреса, който сайтовете виждат. То е в бета версия, не е в Chrome Web Store, а се инсталира през Tools в Dashboard в developer mode. По-нататък organization billing е в публичния roadmap, което има значение тук, защото proxy user на дадена организация фактурира този, който притежава тази организация в момента.
Един proxy URL е най-старият съществуващ интеграционен договор и всеки инструмент, с който разполагате, вече го поддържа. Частта, която си струваше да се направи правилно, никога не е била самият тунел. Важно е какво има право да означава низът преди него и какво се случва, когато сбъркате.