4

Привет, пытаясь определить все действительные URL-адреса в данном домене, не имея зеркала сайта локально.

Люди обычно хотят загрузить все страницы, но я просто хочу получить список прямых URL-адресов для данного домена (например, www.example.com), который будет выглядеть примерно так: www.example.com/page1, www.example. com/page2 и т. д.

Есть ли способ использовать wget для этого? или есть лучший инструмент для этого?

2 ответа2

4

Хорошо, я должен был найти свой собственный ответ:

инструмент, который я использую, был httrack.

httrack -p0 -r2 -d www.example.com
  • опция -p0 говорит ему просто сканировать (не сохранять страницы);
  • опция -rx сообщает глубину поиска
  • опции -d говорят, что он должен оставаться в том же главном домене

есть даже -% L, чтобы добавить отсканированный URL к указанному файлу, но, похоже, он не работает. Но это не проблема, потому что в каталоге hts-cache вы можете найти файл TSV с именем new.txt, содержащий все посещенные URL-адреса и некоторую дополнительную информацию о нем. Я мог бы извлечь URL-адреса из него с помощью следующего кода Python:

with open("hts-cache/new.txt") as f:
    t = csv.DictReader(f,delimiter='\t')
    for l in t:
        print l['URL']
2

Вот грубый сценарий:

curl -s whaturl |
  grep -o "<a href=[^>]*>" |
  sed -r 's/<a href="([^"]*)".*>/\1/' |
  sort -u

grep выбирает все href s. sed выбирает часть URL-адреса из href . sort отфильтровывает повторяющиеся ссылки.

Он также будет работать с wget -O - вместо curl -s .

Пример вывода:

$ curl -s http://stackexchange.com/users/148837/lesmana?tab=accounts | grep -o "<a href=[^>]*>" | sed -r 's/<a href="([^"]*)".*>/\1/' | sort -u
/
/about
/about/contact
/blogs
/leagues
/legal
/legal/privacy-policy
/newsletters
/questions
/sites
/users/148837/lesmana
/users/148837/lesmana?tab=activity
/users/148837/lesmana?tab=favorites
/users/148837/lesmana?tab=reputation
/users/148837/lesmana?tab=subscriptions
/users/148837/lesmana?tab=top
/users/login?returnurl=%2fusers%2f148837%2flesmana%3ftab%3daccounts
http://area51.stackexchange.com/users/16563/lesmana
http://askubuntu.com/users/1366/
http://blog.stackexchange.com
http://blog.stackoverflow.com/2009/06/attribution-required/
http://chat.stackexchange.com/
http://creativecommons.org/licenses/by-sa/3.0/
http://gaming.stackexchange.com/users/2790/
http://meta.stackoverflow.com
http://meta.stackoverflow.com/users/147747/
http://programmers.stackexchange.com/users/116/
http://serverfault.com/users/45166/
http://stackoverflow.com/users/360899/
http://superuser.com/users/39401/
http://twitter.com/stackexchange
http://unix.stackexchange.com/users/1170/
http://www.facebook.com/stackexchange
https://plus.google.com/+StackExchange

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .