Как я могу скачать весь (активный) форум phpbb?

15427
user28163

На одном из форумов, которые я часто посещаю (и добавил много качественного контента), похоже, возникают проблемы с их сервером. Я не уверен в их способности разобраться в проблемах, с которыми они сталкиваются, и в разговоре с одним из администраторов, которого он упомянул, что они не поддерживают данные.

Поскольку полное отступление в случае, если что-то идет ужасно неправильно, я хочу загрузить весь форум. Мне известно, что я не могу загрузить БД, файлы PHP и т. Д. Я просто хочу сделать локально просматриваемую копию всего форума.

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

Есть ли инструменты, которые позволили бы это?

Примечание: очевидно, очень важно, чтобы я мог просматривать его локально ... что было бы очень сложно, если бы каждая из ссылок по-прежнему указывала на « http://www.thesite.com/forum/specific_page.php », а не на «/ forum» /specific_page.php.

5
Вот некоторые инструменты для справки: https://creativeandcritical.net/fups https://github.com/ProgVal/PHPBB-Extract https://github.com/lairdshaw/fups Tilo 5 лет назад 0

5 ответов на вопрос

7
Andrew Russell

Я делаю это прямо сейчас. Вот команда, которую я использую:

wget -k -m -E -p -np -R memberlist.php*,faq.php*,viewtopic.php*p=*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* -o log.txt http://www.example.com/forum/ 

Я хотел избавиться от этих надоедливых сессионных идентификаторов (sid = blahblahblah). Кажется, они автоматически добавляются страницей индекса, а затем прикрепляются ко всем ссылкам вирусоподобным образом. За исключением одного белка где-то в стороне - который ссылается на обычный index.php, который затем продолжается без параметра sid =. (Возможно, есть способ заставить рекурсивный wget запускаться из index.php - я не знаю).

Я также исключил некоторые другие страницы, которые приводят к спасению большого количества хлама. В частности, memberlist.php и viewtopic.php, где указано p =, могут создавать тысячи файлов!

Из-за этой ошибки в wget http://savannah.gnu.org/bugs/?20808 он по-прежнему будет загружать поразительное количество этих бесполезных файлов, особенно viewtopic.php? P =, прежде чем просто удалить их. Так что это сожжет много времени и пропускной способности.

Оглядываясь назад, я думаю, что, возможно, сценарий, который автоматически увеличивает wget до viewtopic? T = 1 и viewforum? F = 1, будет работать лучше. Andrew Russell 14 лет назад 1
Чтобы дать вам представление о том, какова проблема этой ошибки в wget, около 92% загруженных HTML-файлов были удалены. (Хотя обратите внимание, что загружается гораздо меньше файлов, чем при зеркальном отображении без списка отклонений.) Также обратите внимание, что отклонение всех этих файлов делает ссылки на полученные страницы практически бесполезными. Вы должны будете собрать скрипт для исправления ссылок для вас впоследствии. Andrew Russell 14 лет назад 0
2
Evan

Недавно я столкнулся с подобной проблемой на сайте phpBB, с которым я часто сталкиваюсь с неизбежным исчезновением (к сожалению, из-за ухода администратора). Более 7 лет публикаций на форуме я не хотел, чтобы это исчезло, поэтому я написал Perl-скрипт для прохождения всех тем и сохранения их на диск в виде простых HTML-файлов. В случае, если кто-то еще сталкивается с подобной проблемой, скрипт доступен здесь:

https://gist.github.com/2030469

Он опирается на регулярное выражение для извлечения количества постов в теме (необходимо разбить на страницы), но в целом это должно работать. Некоторые из регулярных выражений могут нуждаться в настройке в зависимости от вашей темы phpBB.

1
Phoshi

Попробуйте комбинацию флагов wget, например:

wget -m -k www.example.org/phpbb 

Где -m - зеркало, а -k - «конвертировать ссылки». Вы также можете добавить -p для загрузки изображений, так как я не могу вспомнить, делает ли -m это.

Позволит ли это мне как-то указать свое имя пользователя и пароль или файл cookie? Вещи, которые я больше всего заинтересован в резервном копировании, - это не входящие в систему учетные записи. user28163 14 лет назад 0
О Конечно. У wget есть аргумент --load-cookies, который, очевидно, принимает путь к файлу, но я понятия не имею, как он работает! Phoshi 14 лет назад 0
@ User28163; В http://www.gnu.org/software/wget/manual/html_node/HTTP-Options.html есть раздел --load-cookies, который объясняет это лучше, чем я. Похоже, вы могли бы достичь этого! :) Phoshi 14 лет назад 0
0
Tilo

здесь некоторая добавленная информация к @ andrew-russell

все еще много шума, но начать, если вам нужно войти.

Этот проект выглядит многообещающим, но у меня не получилось: https://github.com/lairdshaw/fups

Пример с логином:

PHPBB_URL=http://www.someserver.com/phpbb USER=MyUser PASS=MyPass  wget --save-cookies=./session-cookies-$USER $PHPBB_URL/ucp.php?mode=login -O - 1> /dev/null 2> /dev/null  SID=`cat ./session-cookies-$USER | grep _sid | cut -d$'\011' -f7`  echo "Login $USER --> $PHPBB_URL SID=$SID"  wget --save-cookies=./session-cookies-$USER \ --post-data="username=$USER&password=$PASS&redirect=index.php&sid=$SID&login=Login" \ $PHPBB_URL/ucp.php?mode=login --referer="$PHPBB_URL/ucp.php?mode=login" \ -O - 1> /dev/null 2> /dev/null  wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R memberlist.php*,faq.php*,viewtopic.php*p=*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* $PHPBB_URL/viewtopic.php?t=27704  ######## loop thru topics see below(but above should get most with the options.  #wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R $PHPBB_URL/viewtopic.php?t= 
-1
Sakamoto Kazuma

HTTrack - это инструмент, который может вам помочь. Я не уверен, будет ли это работать на форумах.

Конечно, это так. user598527 7 лет назад 0