Как объединить URL в Go? - PullRequest
0 голосов
/ 02 апреля 2020

Я создаю веб-сканер в GO. И после анализа и удаления всех URL-адресов на странице есть сценарий ios, где я получаю гиперссылки в различных форматах:

Как видите, здесь много комбинаций, и в некоторых случаях URL-адрес - это совершенно другой домен. Обычные объединения URL не будут работать здесь. Как правильно объединить URL-адреса, чтобы каждое результирующее объединение URL-адресов можно было снова вводить в сканер для непрерывного анализа и очистки?

1 Ответ

1 голос
/ 02 апреля 2020

Работа с URL отличается из-за различий в гиперссылках. Как упомянуто выше, гиперссылка в теге привязки может быть во многих форматах. Вот решение для обработки соединений запрошенного URL-адреса для сканирования и гиперссылок соответственно на этот URL-адрес.

func joinURLs(baseURL, hyperlink string) string {
    parse, err := url.Parse(hyperlink)
    if err != nil {
        return ""
    }
    base, err := url.Parse(baseURL)
    if err != nil {
        return ""
    }
    nextURLToCrawl := base.ResolveReference(parse)
    return nextURLToCrawl.String()
}

Лучшее в этой функции - то, что она может обрабатывать функции, которые находятся в другом домене, без необходимость проверять, является ли имя хоста одинаковым или нет. Теперь ваш код гораздо более декларативен.

...