wget для загрузки профиля Facebook / страниц друзей
Я пытаюсь получить facebook страницу профиля пользователя, используя "wget", но продолжаю получать непрофильную страницу с именем "browser.php", которая не имеет ничего общего с этим конкретным пользователем. URL страницы профиля, как я вижу в браузере, имеет следующий формат:
http://www.facebook.com/user-name
и это то, что я использовал в качестве аргумента команды wget:
wget http://www.facebook.com/user-name
Мне также интересно использовать wget для получения списка друзей пользователя, но даже это дает мне тот же бесполезный результат ("browser.php"):
wget http://www.facebook.com/user-name?sk=friends&v=friends
Может ли кто-нибудь любезно посоветовать мне, что я здесь делаю не так? Другими словами, я пропускаю некоторые ключевые опции для команды wget или wget вообще не подходит для такого сценария?
Любая помощь будет оценена.
Чтобы добавить контекст к этому запросу, мне нужно выяснить, как извлечь эти страницы из Facebook с помощью wget, так как это помогло бы мне написать скрипт / программу для поиска URL-адресов профилей друзей из исходного кода HTML, а затем найти некоторые другие ключевые слова на них и т. д. Я в основном надеюсь, что это поможет мне в некотором избирательном сканировании (конечно, с разрешения Facebook) людей, с которыми я не связан.
4 ответа
Во-первых, Facebook, вероятно, создал условие, при котором определенные пользовательские агенты (например, wget) не могут сканировать страницы. Таким образом, они перенаправляют определенных пользовательских агентов на другую страницу, которая, вероятно, говорит что-то вроде "ваш браузер не поддерживается". Они делают это, чтобы защитить людей от того, что вы делаете. Однако вы можете указать wget идентифицировать себя как другого агента, используя -U
аргумент для wget (читайте страницу руководства wget). например wget -U Mozilla http://....
Во-вторых, настройки конфиденциальности Facebook редко позволяют вам прочитать какую-либо / большую информацию, если вы не вошли в систему как пользователь, и, вероятно, только как пользователь, который является другом профиля, который вы пытаетесь очистить.
В-третьих, существует API-интерфейс Facebook, который необходимо использовать для сканирования и извлечения информации из Facebook - вы, вероятно, нарушаете политику допустимого использования, если пытаетесь получить информацию любым другим способом.
Если вы хотите сохранить страницу входа в систему, вы можете войти в Firefox с выбранным "Оставить меня в системе", затем скопировать эти файлы cookie в файл и использовать их с параметром cookiejar. У вас все еще будет довольно много динамического загруженного скрипта контента, который WGET не собирается сохранять.
Есть много способов снять шкуру с этой кошки. Если вам нужно извлечь конкретный элемент, проверьте API. Если вы просто хотите заархивировать снимок страницы так, как он выглядит в веб-браузере, попробуйте CutyCapt. Это очень похоже на wget, за исключением того, что он анализирует весь документ, как это делает веб-браузер, и сохраняет изображение страницы.
Проверьте следующие проекты с открытым исходным кодом:
facebook-cli
это утилита командной строки для взаимодействия с API Facebook.facebook-friends
который может генерировать HTML-страницу всех ваших друзей на Facebook.
Я не знаю, почему вы хотите использовать wget ..facebook предлагает отличный API .
wget --user-agent=Firefox http://www.facebook.com/markzuckerberg
сохранит общедоступный контент в файл.
Вы должны рассмотреть возможность использования их API .
Чтобы загрузить страницу Facebook, используя wget
Вы можете использовать Chrome DevTools в своем веб-браузере (также в Firefox, Opera и других).
Во-первых, вам нужно преобразовать его в curl
перейдите на вкладку Сеть (при необходимостиобновите страницу или установите флажок Сохранить журнал), найдите интересующую вас страницу (вы можете отфильтровать список), щелкните правой кнопкой мыши запрос / страницу и выберите " Копировать как cURL". Затем вставьте команду в терминал.
Преобразовать из curl
отформатировать в wget
, выполните следующие преобразования:
- Удалить
--compress
параметр, - менять
-H
в--header
во всех местах.
Также подумайте о добавлении следующего wget
параметры:
-k
или же--convert-links
, чтобы преобразовать ссылки в документе, чтобы сделать их пригодными для локального просмотра.-p
или же--page-requisites
, чтобы загрузить все файлы, которые необходимы для правильного отображения страницы.
Смотрите также:
Вы можете легко использовать файлы cookie Firefox для входа в систему: https://askubuntu.com/questions/161778/how-do-i-use-wget-curl-to-download-from-a-site-i-am-logged-into
Кто может видеть ваш список друзей, настраивается, поэтому, если кто-то настраивает его только для друзей, вы не сможете извлечь эту информацию.
Также я рекомендую использовать мобильный сайт, который использует нумерацию страниц вместо загрузки AJAX и имеет более простой, меньший HTML: https://m.facebook.com/USER/friends?startindex=24
И вот (очень ограничительные) термины очистки: https://www.facebook.com/apps/site_scraping_tos_terms.php