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