Перейти к содержимому

Сравнение URL

Сравните два URL и выделите различия в каждом компоненте.

Об этом инструменте

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

Просто вставьте два URL-адреса в поля ввода и нажмите кнопку Сравнить. Инструмент отображает подробную таблицу, показывающую каждый компонент обоих URL-адресов с индикатором состояния: зелёный цвет выделяет компоненты, существующие только в первом URL-адресе, красный — только во втором, жёлтый показывает отличия, а серый обозначает идентичные части. Ниже основных компонентов отдельный раздел показывает все параметры запроса, найденные в любом из URL-адресов, позволяя легко определить добавленные, удалённые или изменённые параметры с первого взгляда.

Часто задаваемые вопросы

Реализация кода

from urllib.parse import urlparse, parse_qs

def parse_url_components(url: str) -> dict:
    p = urlparse(url)
    return {
        "scheme":   p.scheme,
        "host":     p.netloc,
        "path":     p.path,
        "query":    parse_qs(p.query),
        "fragment": p.fragment,
    }

def url_diff(url1: str, url2: str) -> dict:
    a = parse_url_components(url1)
    b = parse_url_components(url2)
    diff = {}
    for key in a:
        if a[key] != b[key]:
            diff[key] = {"from": a[key], "to": b[key]}
    return diff

url_a = "https://example.com/search?q=hello&page=1#results"
url_b = "https://example.com/search?q=world&page=2#top"

differences = url_diff(url_a, url_b)
if differences:
    print("Differences found:")
    for component, change in differences.items():
        print(f"  {component}:")
        print(f"    from: {change['from']}")
        print(f"    to:   {change['to']}")
else:
    print("URLs are identical")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.