LINUX.ORG.RU

Скачать сайт wget-ом, подменяя домен

 


0

1

Был сайт somesite.com. Домен захватили киберсквоттеры. Но сайт остался доступен в виде somesite.hoster.com. Но движок на базе WordPress генерирует страницы с абсолютными ссылками со старым доменом (то есть на somesite.com/store/pics/stuff.jpg вместо somesite.hoster.com/store/pics/stuff.jpg).

Писать свой скрипт-паук, который парсил бы HTML и извлекал бы ссылки, долго и нудно. Просить автора исправить сайт — есть риск, что он его окончательно грохнет :)

Вопрос: есть ли простой способ скачать зеркало сайта наподобие wget -mk, но с заменой доменов somesite.com на somesite.hoster.com?

Ответ: прописать somesite.com в /etc/hosts. Можно в chroot. Для проверки в браузере — сбросить кеш DNS и отключить DNS через HTTP.

★★★★★

Последнее исправление: question4 (всего исправлений: 4)

если ты не разбираешься в этом то лучше в job а способ есть открываешь скачанный html и тупо делаешь замену одного домена на другой. Это если я правильно понял

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

открываешь скачанный html и тупо делаешь замену одного домена на другой

И так для каждого скачанного HTML, которых там порядка 6000 :) Поэтому нужно автоматизировать. Поэтому спрашиваю, вдруг уже сделали.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

порядка 6000

Нанимаешь фрилансера за 500р. (не удивлюсь, если найдутся 300-рублевые особи) и он выполняет грязную работу.

anonymous
()
Ответ на: комментарий от question4

если ты python знаешь то напиши скриптик для переименования

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от anonymous

это себя не уважать так дешево работать.

question4 если что за 700 рр. сделаю скрипт который обойдет все файлы html и сделает замену, соглашайся.

XoFfiCEr ★★☆☆
()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

Через циклическое применение curl + grep + sed + sort + uniq написал за несколько минут. Но хочется более красивого решения.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Atlant

а не проще в /etc/hosts прописать нужный домен на нужном IP ?

А можно ли задать свой hosts для конкретной программы?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

ну если написал уже то какие проблемы? я то могу осуществить красивое решение но оно не надо уже вроде.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от question4

curl + grep + sed + sort + uniq

какая то адская смесь ну вот curl то здесь зачем? ты слишком все усложняешь.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от Atlant

в /etc/hosts прописать нужный домен на нужном IP

Сработало, спасибо. Чтобы нормально работало в браузере, необходимо было сбросить кеш DNS.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

А, я недопёр что тебе именно во время выкачивания надо. Тогда костыль с hosts кмк самый элегантный. Если не хочется им систему затрагивать, можно wget в чрут или докер какой-нибудь завернуть.

pinus_nigra
()
Ответ на: комментарий от pinus_nigra

Если не хочется им систему затрагивать, можно wget в чрут

Точно, спасибо.

я недопёр что тебе именно во время выкачивания надо

Именно. Качать в несколько приёмов — это как раз неэлегантное полуручное решение.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

можно если использовать network namespace. ложить надо в /etc/netns/<название>/hosts

Rost ★★★★★
()
Ответ на: комментарий от anonymous

Не читал топик так далеко.

Тут уже предложили несколько рабочих решений и я всё скачал. Но пока не закрываю, вдруг что новое сообщат :)

у wget тоже есть параметр –header.

Проблема не в том, чтобы подставить в заголовок запроса нужное имя домена, а чтобы при рекурсивном скачивании этот запрос ушёл на нужный IP, а не на захваченный домен.

question4 ★★★★★
() автор топика
Ответ на: комментарий от LesnoyBrat

Есть pavuk c миллионом настроек

Как называется соответствующая настройка? -tr_str_str — только для локальных имён, -js_transform — только для джаваскрипта.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 2)
Ответ на: комментарий от LesnoyBrat

Я прошу прощения, может быть топик стартер маконенавистник, но попалась мне интересная прога SiteSucker ( название прикольное ). Прости, если напрасно потревожил.

LesnoyBrat
()
Ответ на: комментарий от LesnoyBrat

Закрытая. Платная. Под платформу, которой у меня нет и не будет.

question4 ★★★★★
() автор топика

Странно, что никто не предложил httrack. Он подменяет все ссылки на относительные, и сайт можно читать хоть офлайн, хоть под другим адресом. Да и wget няп умеет то же самое.
Если ссылки ведут на что-то вне сайта - find и sed.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

wget няп умеет то же самое

Как им скачать сайт, у которого все внутрисайтовые ссылки битые и требуют коррекции?

question4 ★★★★★
() автор топика
Ответ на: комментарий от t184256

man unshare

С какими ключами? Достаточно одного --net?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Сорян, не сразу понял, что к сайту есть доступ под другим адресом, но ссылки ведут на старый.

token_polyak ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.