← Всички публикации

Proxy Port: Таргетиране и сесии в потребителското име

FourA proxy портът чете мрежа, държава и sticky сесии от потребителското име, а правописна грешка връща 400 с валидните ключове. Ето пълната граматика.

Какво ново

Само една липсваща буква е достатъчна. Въведете -contry-de в потребителското име на proxy и правописната грешка остава незабелязана, изглеждайки точно като работеща опция.

FourA proxy портът отговаря на това с грешка 400, която изброява всеки познат ключ. Това е малък детайл от продукт, който излезе от beta на 15 септември: proxy URL на нашите изходи за всеки клиент, който поддържа такъв (браузър, инструмент за изтегляне, съществуващият ви scraper), без необходимост от писане на API заявки. Създавате proxy потребител в таблото за управление, поставяте низа, а тунелите и трафикът се отчитат към вашия план по същия начин, както API заявките.

Ето пълната граматика и причината за всяко правило в нея.

Как работи

Портът се намира на proxy.foura.ai:34004 и поддържа HTTP CONNECT с Basic автентикация към цели на портове 443 и 80. Данните за достъп са proxy потребители, умишлено отделени от вашия API ключ: ръкостискането на proxy преминава в некриптиран вид, а 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 са домашни адреси, черпени от премиум трафика на вашия план плюс закупения допълнително. В споделената мрежа -fallback-premium позволява на връзката да премине към премиум изход, когато споделеният не може да я поеме. Изключен е, освен ако не го заявите изрично, и се задейства само докато има наличен премиум лимит. Активирането му по подразбиране би означавало да решим от ваше име да изразходваме този лимит.

Параметърът за държава може да се повтаря, така че -country-de-country-fr представлява обхват от две държави. Регион, град, мрежа по AS номер, устройство (windows, android, ios, mac) и lifetime (от 3 до 1440 минути) са достъпни само за premium. Ако поискате град в споделената мрежа, получавате 400 вместо опит за приблизително изпълнение. В споделената мрежа изборът е по държава и нищо по-детайлно, защото филтър за град, който в повечето случаи не може да бъде изпълнен, е по-лош от липсата на филтър.

-session-<name> (от 1 до 32 букви, цифри или долни черти) прави връзките постоянни (sticky): всяка връзка с това име споделя един и същ адрес. При споделената мрежа адресът се запазва чрез плъзгащ се десетминутен прозорец, така че остава активен, докато продължавате да го използвате. При premium се запазва за зададеното от вас lifetime или според стойността по подразбиране за мрежата. Ако пропуснете сесията, всяка връзка излиза от нов адрес.

Налице са и запазени настройки по подразбиране. Таргетирането, запазено за даден proxy потребител в Dashboard, се прилага за всяка връзка, която той прави, така че низът може да се сведе само до идентификационните данни. Потребителското име все пак има предимство за своята собствена връзка, а any връща запазена стойност обратно: -city-any изисква от ключ, който помни Мюнхен, да обхване цяла Германия. Клиенти, които могат да подават headers към CONNECT (curl го поддържа с --proxy-header), могат да изпращат същите опции като X-Foura-Country, X-Foura-Session и останалите, като header има предимство пред потребителското име.

Резултат

Повечето от това премахва въпросите, които иначе бихте си задали.

Защо заявката ми беше отхвърлена? Всеки отказ след проверка на идентификационните данни съдържа X-Foura-Error header с едноредово обяснение за причината. Код 400 посочва конкретната опция и допустимите стойности за нея. Код 429 указва кой лимит от плана ви е достигнат: едновременно отворени тунели, отваряния на тунели за минута или стандартен трафик за отчетния период.

На кого се начислява лимитът? На акаунта. Тунелите и отварянията се отчитат за целия акаунт, а не за отделен proxy потребител, така че втори чифт идентификационни данни не предоставя отделен лимит. Байтовете се броят към общия трафик по плана, а премиум байтовете се приспадат от премиум лимита в рамките на тази обща квота, без да се добавят към нея. При планове с кредити портът има включени гигабайти, които се презареждат от страницата Billing. Нищо не се отчита, ако не е отворен тунел.

Кой притежава идентификационните данни? Вече това може да бъде организация, така че софтуерът за извличане на данни да не спира, когато даден служител напусне. Членовете ги използват и виждат паролата; администраторите и собствениците могат да ги преиздават (rotate), деактивират или пренасочват; единствено собственикът може да ги прехвърля извън организацията.

Какво направи той? Превключете селектора за Product в Overview, Metrics или Activity на Proxy: тунели в същите класове резултати като вашите API заявки, колко са отворени в момента, време за настройка и трафик, разделени по proxy потребител, цел, изходна държава или клиентски IP адрес. Сесия, която вече има своя адрес, обикновено се свързва за значително под една секунда.

Но портът е просто канал, и това е компромисът. Вашият клиент комуникира със сайта през тунела, така че unblocker-ът, вашите validate rules и браузърното решаване на предизвикателства не са част от този път. Освен това се отчитат и байтовете: страница за отказ, получена през отворен тунел, са байтове като всички останали, докато при API неуспешна заявка не се таксува. Прехвърляйте байтове през порта; изпращайте страниците, които оказват съпротива, към API.

За напреднали потребители

След изчерпване на premium лимита, трите маршрута към тази мрежа получават три различни отговора, напълно умишлено. Връзка, която изрично посочва -network-premium, се отхвърля с 403 с това обяснение, тъй като клиент, обслужен тихо от друго място, би продължил да изпраща заявки и след това да търси във фактурата premium ред, който никога не се появява. Fallback просто не се използва, а premium настройката по подразбиране, записана за 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 е в публичната пътна карта, което има значение тук, тъй като proxy user на дадена организация фактурира този, който притежава тази организация днес.

Proxy URL е най-старият интеграционен договор, който съществува, и всеки инструмент, който ползвате, вече го поддържа. Частта, която си струваше да се направи правилно, никога не е била самият тунел. Важното е какво е позволено да означава низът пред него и какво се случва, когато сгрешите.