facebook-post-down
Сваля текста и снимките (в пълен размер) от пост във Facebook.
Най-лесно: start.bat
Цъкни два пъти на start.bat. Той пита кой потребител и колко поста назад, сваля ги и накрая отваря папката downloads.
- Ползва
venvдо скрипта. Ако го няма, при първото пускане го създава и инсталира нужното. - Ако още не си влизал във Facebook, отваря прозорец за вход (само първия път).
Инсталация (ръчно)
pip install -r requirements.txtПолзва вече инсталиран Microsoft Edge или Google Chrome. Ако нямаш нито един от двата:
python -m playwright install chromiumУпотреба
Първо влизаш в акаунта си (само веднъж). Сесията се пази във fb_session.json:
python fb_post.py --loginСлед това:
python fb_post.py "https://www.facebook.com/.../posts/..."
python fb_post.py линк1 линк2 линк3
python fb_post.py -f links.txt # по един линк на ред
python fb_post.py --headless "линк" # без прозорец на браузъраПо потребител или страница
Вместо линкове може да дадеш потребителско име, id или линк към профила. Скриптът отваря профила, скролира стената и сваля последните --limit поста (по подразбиране 10):
python fb_post.py -u zuck --limit 20
python fb_post.py -u 100000000000000 # числово id
python fb_post.py -u "https://www.facebook.com/nasa"
python fb_post.py -u nasa -u spacex --limit 5 # няколко наведнъжПостовете отиват в downloads/<потребител>/.
Резултат
За всеки пост се прави папка downloads/<дата>_<id>/ с:
text.txt- текстът на поста (с натиснато „Виж още“)01.jpg,02.jpg, … - снимките в оригинален размерinfo.json- линк, текст и адресите на снимките
Защита на акаунта
Facebook забранява автоматизираното събиране на данни. Затова скриптът се държи като човек:
- Паузи: случайни 2-5 с между снимките, 10-25 с между постовете и 2-4 с между скроловете. Затова е бавен, около минута на пост с много снимки.
- Нормален браузър: без видим прозорец се представя като обикновен Edge/Chrome, а не като
HeadlessChrome. Флагътnavigator.webdriverе изключен. - Дневен лимит: до 50 поста на ден. Броят се в
usage.json, а при изчерпване скриптът спира.
Стойностите са най-горе във fb_post.py (PHOTO_PAUSE, POST_PAUSE, SCROLL_PAUSE, DAILY_LIMIT). Ако ги намалиш или вдигнеш лимита, рискът от блокиране расте.
Ограничения
- Facebook често сменя HTML-а си. Ако текстът спре да се намира, обнови селекторите в
EXTRACT_JS. - Видеата не се свалят.
- Снимките от коментарите не се свалят.
fb_session.jsonсъдържа бисквитките за вход в акаунта ти. Не го споделяй (вече е в.gitignore).