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

Chrome разширение (Beta): Всяка заявка от страница като API извикване

Нашето Chrome разширение в бета версия намира заявката с данните на страницата и я копира като FourA извикване за curl, Python, Node или MCP, заедно с headers и cookies.

Какво ново

Познавате процедурата. Отваряте DevTools, презареждате, скролвате през десетки requests, докато някой от тях не покаже цените, които търсите, десен бутон, Copy as cURL. След това започва същинската работа: премахване на тези headers, които имат смисъл само в Chrome, пренаписване за вашия клиент и проверка дали изобщо отговаря, когато заявката не идва от браузъра ви.

Разширението FourA Chrome extension, вече в бета версия, съкращава това до няколко клика. То добавя таб FourA до Network, който показва списък с requests на страницата, намира този, съдържащ видим за вас текст, и го копира като готово извикване към Single, Proxy Finder или Browser, в curl, Python, Node или MCP. Същото разширение разполага с popup, който прекарва самия Chrome през някой от вашите proxy port потребители.

Все още не е в Chrome Web Store. Можете да го изтеглите от Tools в Dashboard и да го заредите в режим за разработчици (Chrome, версия 116 или по-нова). Разширението е безплатно; трафикът през тунела се отчита към лимита за proxy във вашия план, а заявките от DevTools се таксуват според стандартната цена на API.

Как работи

Отворете DevTools на страницата, от която искате да събирате данни, и изберете таба FourA. Презаредете и табът ще покаже списък с requests точно като Network, като рекламите и аналитичните скриптове са скрити по подразбиране, а опцията This site only филтрира само собствените requests на страницата. Въведете цена, име на продукт или произволен друг видим текст в Find in responses, и инструментът ще ви насочи към заявките, чийто response го съдържа. Често точно тогава откривате, че страницата се рендира от JSON endpoint, който можете да извиквате директно.

Изберете заявката, посочете engine под FourA call и копирайте. Ето curl формата за JSON заявка в онлайн магазин (съкратен: пълното копиране включва всеки header, изпратен от страницата):

curl https://api.foura.ai/api/single \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "url": "https://shop.example.com/api/products?category=coffee&page=2",
  "headers": [
    ["accept", "application/json"],
    ["referer", "https://shop.example.com/coffee"],
    ["accept-language", "en-GB,en;q=0.9"]
  ],
  "browser": "Chrome",
  "os": "macOS",
  "unblocker": true
}'

Три неща в тази заявка са направени умишлено. Headers се предават като списък от двойки, в реда, в който страницата ги е изпратила, което съответства на формата на Single. Тези, които Chrome генерира за собствената си връзка (host, content-length, accept-encoding, connection и още няколко), се премахват, тъй като копирането им чупи следващия клиент, който изпраща заявката. А browser плюс os изискват browser profile, съвпадащ с версията на Chrome, която използвате в момента. Версията е пропусната целенасочено: заявката получава най-новата поддържана от нас, вместо да бъде отхвърлена за версия, с която не разполагаме.

MCP форматът представлява името на инструмента (foura_single), последвано от същия JSON, готов за agent, който комуникира с нашия MCP server.

Следват два бутона. Open in the playground зарежда заявката в Dashboard Playground със същия избран ключ, ако е ваш. Run through FourA я изпраща и поставя "The browser got" и "FourA got" едно до друго, за да видите дали нашият отговор съвпада с този на страницата, преди да напишете и един ред код.

Impact

Ръчният подход е добре документиран. Ръководството на ScrapingBee изисква пет стъпки само за извличане на cURL командата от Chrome и отбелязва, че копието съдържа всеки header и cookie, изпратени от браузъра. Повечето scrapers започват оттам. Това обаче е само половината работа, тъй като копието доказва единствено, че заявката работи от вашия браузър и никъде другаде.

Разделът FourA покрива и двете части на едно място. Намирате заявката по съдържанието, което връща, вместо да гадаете по URLs, получавате повикване във формата, очакван от API, а с един клик виждате дали работи от наша страна. Това спестява най-много усилия при страници, където данните пристигат чрез заявка, чийто URL не показва нищо полезно.

Все още нямаме точни данни за спестеното време. Това е бета версия, а реалната мярка ще бъде следващата ви задача.

For Power Users

Превключете engine на Proxy Finder и панелът ще обвие същата заявка, предлагайки опция Exit country:

{
  "request": {
    "method": "GET",
    "url": "https://shop.example.com/api/products?category=coffee&page=2",
    "headers": [["accept", "application/json"]],
    "unblocker": true
  },
  "exitCountries": ["DE"]
}

exitCountries е стриктен списък с разрешени. Заявката никога не се пренасочва резервно към друга държава, а обслужилата държава се връща като exitCountry. Това е функционалност на абонаментния план, така че план без таргетиране по държава връща отказ с такова съобщение.

Browser има различна структура, тъй като отваря страници, вместо да изпраща заявки. Приема хедъри като обект, превръща хедъра Cookie на страницата в списък с бисквитки с обхват до хоста и пропуска user-agent и хедърите за client-hints, тъй като енджинът изпраща свои собствени (при включена опция за профил, изпраща User-Agent на текущия прозорец). Повтаря само GET заявки без тяло. POST заявка от форма за търсене принадлежи към Single, където JSON тяло пътува като обект, а всичко останало като точния низ, изпратен от страницата.

Кликнете с десния бутон върху произволна заявка за същите опции за копиране плюс Copy URL и Copy response. API ключът за изпълнения се намира в Settings на раздела и остава до затварянето на Chrome, освен ако не поставите отметка на Keep the key on this computer.

Едно предупреждение, и то съвсем сериозно. Извикване, копирано с бисквитки, пресъздава сесията, в която сте влезли. Третирайте го като парола и не го оставяйте в тикети, чатове и публични хранилища.

Изскачащият прозорец също заслужава внимание. Той измерва адреса, който даден сайт вижда през тунела, вместо да го чете от настройките ви, и когато този адрес съвпада с вашия, показва Not routed. Когато иконата светне в червено с число, проксито е отказало толкова връзки през последната минута, а изскачащият прозорец обяснява причината. Опциите за потребителско име username options в страницата Location са същите, които са документирани за прокси порта.

Какво следва

Разширението остава в бета версия, инсталирана от Dashboard, докато не преценим, че е напълно готово, и не се ангажираме със срок за публикуване в Chrome Web Store. Chrome е единственият браузър, за който е създадено и тествано. Ръководството за инсталация setup guide описва актуалната версия към днешна дата; бъдещите промени зависят от това какво ще откриете, когато насочите раздела на FourA към реална задача.

Така че следващия път, когато дадена страница затрудни вашия парсер, отворете DevTools преди да отворите HTML кода. Най-ефективният скрапер често е този, който извиква заявката, която страницата вече е направила.