Акценти
Много сайтове показват началната си страница на всеки, а заключват всичко останало един клик по-навътре. Auto вече влиза през входната врата. Той взима сесията от началната страница, след което заявява желаната от вас страница заедно с нея. Browser пое по-тежката работа тази седмица. Той преминава checkbox предизвикателството на Cloudflare, когато няколко заявки достигнат една и съща страница едновременно, а когато страницата остане затворена, докладва какво е видял, вместо да връща само една дума.
Какво ново
Auto отваря страници, които изискват сесия
Обява в eBay отхвърля cold request по всеки наш маршрут. Същият URL се отваря, когато заявката носи cookie jar, който началната страница на eBay дава на всеки посетител. Без вход, без чужди профили, нищо, което не бихте могли да направите ръчно в таб.
Auto вече прави това вместо вас. Когато даден exit достигне origin и все още получава отказ за вътрешната страница, Auto изтегля корена на сайта през същия exit, запазва всички върнати cookies и пита отново. Полученият response ви информира, че това се е случило. Печелившото стъпало гласи warmup.
Но цената е интересната част. Тази сесия се връща преносима, така че cookie jar не е прикрепен към съответния exit, който го е получил. Последващите четения се повтарят през /api/proxy и достигат /api/single за 2 кредита. Това е същата верига от ескалация и повторение, за която писахме при преминаване през Cloudflare, като собствените session cookies на доставчика заместват cf_clearance.
Ограничено умишлено. Два опита на заявка, през различни изходи, само след като вътрешният URL вече е върнал грешка и само когато exit вече е достигнал origin първоначално. Така сайт, който просто ни блокира, плаща две допълнителни подзаявки веднъж, а не в цикъл. Повече за това как стълбата избира своите стъпала има в статията за Auto.
Browser преминава checkbox предизвикателства при припокриващи се заявки
Browser вече решава checkbox уиджета на Cloudflare при едновременни заявки към една и съща страница. Три едновременно към новинарски сайт зад Turnstile отнемат 5.2s, 5.8s, 9.1s.
С това идват две по-малки промени. Едно натискане се отчита само след като уиджетът реално изчезне, тъй като Cloudflare подава предизвикателството си отново по-често от очакваното (първото натискане редовно не е краят на комуникацията). Страница, която е преминала успешно, докладва defenseSolved: true при извикването, което я е освободило, като това е същото извикване, таксувано за решението.
Блокирана страница ви казва какво е видял solver-ът
"Timeout" насочва към латентност (latency). В повечето случаи латентността не е проблемът, а отговорът се намира един exit по-настрани.
Когато Cloudflare отхвърли решение, той преиздава предизвикателството и пуска свой собствен маркер за повторен опит в cookie jar. Browser чете този маркер. Вместо да изчаква времето да изтече, той отговаря след около 17 секунди, като посочва доставчика, направените натискания и дали достъпът е предоставен:
Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)
Един от тези редове ви казва да изпратите request-а по друг начин. Другият не ви казва нищо.
Грешките от API слоя също се четат по-лесно. Request, който надвишава времето за изчакване, се връща като timeout, услуга, която не можем да достигнем, се връща като unavailable, и нито едно от двете не е описано като проблем с proxy, когато request-ът изобщо не е използвал proxy. timeout_ms при извикване на браузър се спазва до пълните 120 секунди, които API приема, така че бавната цел получава зададения от вас бюджет и вие четете собствената присъда на енджина, а не тази на gateway-я. Параметрите са изброени в API документацията.
Данни за фактуриране и коригиране на фактура в месеца на издаване
Българските фактури отпечатват представител на компанията (МОЛ) в полето за получател. Нищо в системата не го събираше, така че този ред винаги излизаше празен. Данните за фактуриране вече имат това поле.
Таблицата с фактури също предлага Актуализиране на данни за фактура, която все още е в месеца на издаване и чиито замразени данни се различават от текущия ви профил за фактуриране. Диалоговият прозорец назовава всяко поле, което се променя, и на какво се променя, ясно заявява, че номерът, датите и сумите остават същите, и потвърждаването му е вашето съгласие, записано от наша страна. Фактура в прозореца, при която няма какво да се променя, изписва "Редактируема до" и своята дата, така че прозорецът е нещо, което можете да видите, а не нещо, за което разбирате по-късно.
Под капака
Всеки скрипт, който Dashboard изпълнява, се обслужва от нашия собствен origin, а влизането ви връща само към път на този сайт.
Внедряванията на услугата за рендиране се извършват сървър по сървър и всеки сървър трябва да обслужи реална страница, преди да се премине към следващия.
На портала за статус, endpoint-ът за проблеми обслужва отворени и разрешени елементи през своя публичен API, съвпадайки с това, което страницата показва.
Отказ, който назовава себе си, е едно извикване. Изчакване, което завършва с "Timeout", е предположение какво да опитате след това, платено на същата цена. Грешките са продуктова повърхност и тази седмица започнахме да се отнасяме към тях като към такава.