
Быстрый инструмент для извлечения URL-адресов из HTML-атрибутов с помощью краулинга.
__
__ _ _(_ ) __ _ __
/'_ '\/'_' )| | /'__'( '__)
( (_) ( (_| || |( ___| |
'\__ '\__,_(___'\____(_)
( )_) |
\___/' @dwisiswant0
Быстрый инструмент для извлечения URL-адресов из HTML-атрибутов с помощью обхода страниц. Вдохновлен твитом @omespino, в котором показана возможность извлечения значений src, href, url и action путём выполнения JavaScript через протокол Chrome DevTools.
Установка проста. Вы можете скачать готовый бинарный файл со страницы релизов, распаковать и запустить! Или с помощью
▶ (sudo) curl -sSfL https://git.io/galer | sh -s -- -b /usr/local/bin
Если у вас установлен и настроен компилятор go1.22+:
▶ go install -v github.com/dwisiswant0/galer@latest
▶ git clone https://github.com/dwisiswant0/galer
▶ cd galer
▶ go build .
▶ (sudo) install galer /usr/local/bin
Просто запустите galer с помощью:
▶ galer -u "http://domain.tld"

Будет показана справка по инструменту. Вот все поддерживаемые параметры.
$ galer -h
__ v0.2.0
__ _ _(_ ) __ _ __
/'_ '\/'_' )| | /'__'( '__)
( (_) ( (_| || |( ___| |
'\__ '\__,_(___'\____(_)
( )_) |
\___/' @dwisiswant0
Быстрый инструмент для извлечения URL-адресов из HTML-атрибутов с помощью обхода страниц
Использование:
galer -u [URL|URLs.txt] -o [output.txt]
Параметры:
-u, --url <URL/ФАЙЛ> Цель для извлечения (один URL или список)
-e, --extension <РАСШИРЕНИЕ> Показывать только определённые расширения (через запятую, например js,php)
-c, --concurrency <N> Уровень параллелизма (по умолчанию: 50)
-w, --wait <N> Ожидать N секунд перед выполнением (по умолчанию: 1)
-d, --depth <N> Макс. глубина обхода (количество уровней перехода по ссылкам)
--same-host Только тот же хост
--same-root Только тот же корень (eTLD+1) (имеет приоритет над --same-host)
-o, --output <ФАЙЛ> Сохранить извлечённые URL-адреса в файл
-T, --template <строка> Формат шаблона вывода (например, "{{scheme}}://{{host}}{{path}}")
Допустимые переменные: "raw_url", "scheme", "user", "username",
"password", "host", "hostname", "port", "path", "raw_path",
"escaped_path", "raw_query", "fragment", "raw_fragment".
-t, --timeout <N> Макс. время (секунды) на соединение (по умолчанию: 60)
-s, --silent Тихий режим (подавлять ошибки)
-v, --verbose Подробный режим (показывать детали ошибок, если не используется тихий режим)
-h, --help Показать справку
▶ galer -u "http://domain.tld"
▶ galer -u /path/to/urls.txt
▶ cat urls.txt | galer
Если вы хотите объединить с другими инструментами:
▶ subfinder -d domain.tld -silent | httpx -silent | galer
Вы можете использовать galer как библиотеку.
▶ go get github.com/dwisiswant0/galer/pkg/galer@latest
Например:
package main
import (
"fmt"
"github.com/dwisiswant0/galer/pkg/galer"
)
func main() {
cfg := &galer.Config{
Timeout: 60,
}
cfg = galer.New(cfg)
run, err := cfg.Crawl("https://twitter.com")
if err != nil {
panic(err)
}
for _, url := range run {
fmt.Println(url)
}
}
Если у вас остались вопросы или вы нашли ошибку, пожалуйста, создайте issue. Любые сообщения об ошибках приветствуются; некоторые функции ещё не были протестированы из-за нехватки свободного времени.
[!CAUTION] galer ещё не достиг версии 1.0. Поэтому эта библиотека в настоящее время не поддерживается и не предоставляет стабильного API; используйте на свой страх и риск.
Нет никаких гарантий стабильности API в этой библиотеке, хотя они вряд ли кардинально изменятся. Возможны небольшие корректировки API и исправления ошибок.
id_ID • /gäˈlər/ — если galer, не нюхай его, сразу мой руки, дурак!
sebel выпущен @dwisiswant0 под лицензией MIT. См. LICENSE.