Wyciągnij URL-e z tekstu
Wyłuskaj wszystkie URL-e http/https z dowolnego bloku tekstu do tablicy JSON bez duplikatów
Tekst
URL-e
Czym jest ekstraktor URL-i?
Masz 200-wierszowy wątek mailowy, export kanału ze Slacka, plik z logami, transkrypt z supportu albo notatki w markdownie — i chcesz wszystkie URL-e, które tam padają, w kolejności, bez duplikatów, gotowe do wklejenia gdzie indziej. Może audytujesz, w które linki klikał klient. Może przed publikacją sprawdzasz dokument pod kątem linków wychodzących. Może podajesz URL-e crawlerowi. Cokolwiek to jest, nie chcesz scrollować i wklejać 40 razy. Wrzuć tekst w lewy panel, a prawy zwróci ci tablicę JSON wszystkich znalezionych URL-i.
Ekstrakcja stoi na prostym regexie, który łapie http:// i https:// z dowolnym ciągiem znaków niebędących białymi. Każde dopasowanie jest potem obcinane z końcowych znaków interpunkcyjnych, które prawie nigdy nie są częścią URL-a (kropka, przecinek, średnik, zamykający nawias zwykły lub kwadratowy — to, co zostaje, gdy zdanie kończy się linkiem) i walidowane przez konstruktor URL. Jeśli konstruktor go przyjmie, jest prawdziwy; jeśli rzuci, idzie do kosza. Duplikaty są usuwane z zachowaniem kolejności występowania — wygrywa pierwsze wystąpienie. Podejście odpowiada temu, co WHATWG URL Standard nazywa „URL parsing”, i wpisuje się w to, jak regexy w JavaScripcie zwykle wyłapują URL-e.
Wynik to tablica JSON stringów, w kolejności, w jakiej URL-e się pojawiły. Jeśli w tekście nie było żadnego URL-a, dostajesz [] — pustą tablicę, bez błędu, bez tosta. Wszystko leci w twojej przeglądarce. Nic nie jest wysyłane, nic nie ląduje w logach. RFC 3986 to spec definiująca, co liczy się jako poprawny URL, a konstruktor URL ją implementuje.
Jak używać ekstraktora
Trzy kroki. Każdy odpowiada jednemu przyciskowi na tej stronie.
Wklej tekst albo wczytaj przykład
Wrzuć swój tekst w lewy panel — treść maila, plik z logami, transkrypt, artykuł, cokolwiek. Kliknij Przykład, żeby załadować realistyczny przypadek: wewnętrzną notkę zespołową z czterema URL-ami rozsianymi po tekście. Przykładowe wejście:
Cześć zespole — sprawdźcie zamówienie pod https://api.shop.example.com/v1/orders/ORD-1001
oraz rzućcie okiem na panel https://admin.shop.example.com/dashboard?tab=orders.
Klientka (Ava Chen) odezwała się przez http://support.shop.example.com/tickets/T-4521 — dokumentacja jest tutaj: https://docs.shop.example.com/api/orders.Ekstraktor łapie tylko URL-e <code>http://</code> i <code>https://</code>. Gołe domeny w stylu <code>shop.example.com</code> bez schematu są pomijane (są niejednoznaczne — to może być nazwa hosta, nazwa pliku albo zwykły tekst).
Przeczytaj tablicę URL-i
Prawy panel pokazuje tablicę JSON URL-i w kolejności dokumentu, z usuniętymi duplikatami. Końcowe znaki interpunkcyjne, które przyszły z otaczającego zdania, są obcięte. Każdy URL jest walidowany przez konstruktor URL — wszystko, co jest popsute, jest po cichu pomijane, więc w tablicy zostają tylko prawdziwe, parsowalne URL-e.
Skopiuj albo pobierz
Kliknij Kopiuj, żeby wysłać JSON do schowka, albo Pobierz, żeby zapisać go jako plik .json. Minifikuj upycha tablicę w jednej linii, jeśli potrzebujesz tego do wpisu w logu. Użyj Wyczyść po stronie wejścia, żeby zacząć od pustej kartki.
Kiedy faktycznie tego użyjesz
Audyt zgłoszeń w supporcie
Klient wkleja długi wątek mailowy do zgłoszenia. Konsultant (Marco Rivera) musi wiedzieć, do których URL-i klient się odwołuje. Wrzuć treść maila tutaj, weź tablicę, kliknij każdy z osobna. Oszczędza zmęczenia oczu od scrolla i ryzyka, że któryś przeoczysz.
Przemielenie exportu ze Slacka albo Discorda
Wyeksportowałeś kanał i chcesz przepuścić wszystkie linkowane zasoby przez swój link checker albo bot archiwizujący. Export jest w JSON-ie albo HTML-u, ale URL-e są pomieszane z tekstem, emoji i metadanymi. Wklej całość tutaj i masz czystą listę URL-i gotową do fetch()-a w pętli.
Audyt linków przed publikacją wpisów i dokumentacji
Priya Patel za chwilę publikuje wpis na 4 000 słów i chce sprawdzić, czy każdy link wychodzący jeszcze działa. Wkleja źródłowy markdown, dostaje tablicę URL-i, przepuszcza je przez checker. Wskazówki Google’a o linkach możliwych do zaindeksowania zakładają, że twoje linki działają — popsute biją po pozycjach.
Wyłuskiwanie URL-i ze strukturalnych logów
Logi aplikacji często mają URL-e zaszyte w komunikatach błędów, śladach żądań albo polach referrer. Jeśli badasz incydent i chcesz zobaczyć wszystkie URL-e, które przeleciały przez 5-minutowe okno, wklej kawałek logu i zdedupuj. Często ta jedna zdeduplikowana lista jest najszybszą drogą, żeby wyłapać ten jeden dziwny URL, od którego ruszyła kaskada.
Częste pytania
Czy łapie ftp:// albo mailto: lub inne schematy?
Nie — tylko http:// i https://. Linki webowe to to, co ludzie zwykle mają na myśli, mówiąc „wyciągnij URL-e”, a regex jest celowo ciasny, żeby uniknąć fałszywych trafień. Jeśli potrzebujesz innych schematów, WHATWG URL Standard je obsługuje, ale dopasowanie robi się rozmyte (adresy mailto: wyglądają jak tekst, ftp: jest dziś rzadkie). Wrzuć feature request, jeśli faktycznie masz taki use case.
Jak radzi sobie z linkami markdown w stylu [tekst](https://example.com)?
Czysto. Regex znajduje https://example.com wewnątrz nawiasu, a obcinanie końcowej interpunkcji ścina zamykający nawias. Dzięki temu wyciągasz nagi URL z markdowna, BBCode, HTML-owego <a href> i większości innych otaczających składni bez specjalnego parsera per format.
Czy duplikaty są zachowywane w kolejności, czy usuwane?
Usuwane, z zachowaniem kolejności pierwszego wystąpienia. Jeśli twój tekst wspomina https://shop.example.com trzy razy, w wyniku pojawi się raz, w pozycji pierwszego wystąpienia. Dedup to prosty filtr Set — zobacz MDN o Set.
A co z URL-ami z dziwnymi znakami — pipe, nawiasy kwadratowe, okrągłe?
Pipe (|) i nawiasy kwadratowe są w URL-ach poprawne, ale rzadkie w prawdziwych URL-ach, więc regex je łapie, dopóki nie są poprzedzone białym znakiem. Zamykające nawiasy kwadratowe i okrągłe na samym końcu dopasowania są obcinane, bo dużo bardziej prawdopodobnie są interpunkcją zdania niż częścią URL-a. Jeśli masz prawdziwy URL kończący się na ), konstruktor URL go i tak przyjmie — ale w tekście musiałbyś dodać po nim spację, żeby nawias zamykający został przy URL-u.
Czy jest limit rozmiaru?
Tak — 1 MB. To kilka tysięcy stron tekstu, znacznie więcej niż jakikolwiek wątek mailowy, transkrypt czy kawałek logu, który realnie byś wklejał. Jeśli masz plik wielomegowy, podziel go na kawałki albo przepuść wcześniej przez grep/ripgrep z linii poleceń.
Działa offline?
Tak. Wszystko leci w twojej przeglądarce — dopasowanie regexa, walidacja URL-a, dedup. Jedyny ruch sieciowy to początkowe załadowanie strony. Jak strona już jest otwarta, możesz się rozłączyć, a narzędzie nadal działa. Konstruktor URL jest wbudowany w każdą nowoczesną przeglądarkę zgodnie z URL API.
Inne narzędzia do URL-i i tekstu
Ekstrakcja to jedna operacja. Oto co naturalnie z nią współgra: