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) людей, с которыми я не связан.


person rogerchucker    schedule 25.07.2011    source источник


Ответы (6)


Во-первых, Facebook, вероятно, создал условие, при котором определенные пользовательские агенты (например, wget) не могут сканировать страницы. Таким образом, они перенаправляют определенных пользовательских агентов на другую страницу, на которой, вероятно, будет написано что-то вроде «ваш браузер не поддерживается». Они делают это, чтобы защитить людей от того, что делаете вы. Однако вы можете указать wget идентифицировать себя как другого агента, используя аргумент -U для wget (прочтите страницу руководства wget). например wget -U Mozilla http://....

Во-вторых, настройка конфиденциальности Facebook редко позволяет вам читать какую-либо / много информации, если вы не вошли в систему как пользователь, и, вероятно, только как пользователь, который является другом профиля, который вы пытаетесь очистить.

В-третьих, существует Facebook API, который вам нужно использовать для сканирования и извлечения информации из facebook - вы скорее всего, нарушат Политику допустимого использования, если вы попытаетесь получить информацию любым другим способом.

person Soren    schedule 25.07.2011
comment
Если человек, не входящий в мою сеть, публикует список своих друзей, то с точки зрения Facebook это все еще конфиденциальная информация? - person rogerchucker; 26.07.2011
comment
Сначала я думал о том, чтобы пойти по маршруту API Facebook (в частности, Graph API), но похоже, что для всей информации о друзьях требуется токен доступа, и я хотел сделать это ненавязчиво. Будет ли это нарушением политики Facebook, даже если это чисто академическое исследование? - person rogerchucker; 26.07.2011
comment
Общее правило для данных facebook через Facebook API простое: если вы можете получить их через Facebook API, то это либо данные, к которым вам предоставлен доступ, либо данные, которые являются общедоступными. Большинство API facebook позволит вам запрашивать данные у пользователя, а API вернет запрошенные вами данные и, которые вам разрешено просматривать. следовательно, ваше приложение при работе с данными facebook должно быть построено так, чтобы оно могло принимать данные и не возвращаемые данные для аналогичных запросов. - person Soren; 26.07.2011
comment
@ user611846 - Я не уверен, есть ли точная линия, в которой Facebook считает это нарушением TOS (я не связан с Facebook), однако я считаю, что они смотрят на паттерны ненормального поведения и реагируют в соответствии с их нарушениями. Однако многие компании действительно хотят поддержать академические исследования, и у них часто есть программы для таких случаев, в которых они устанавливают договорные условия и потенциально предоставляют вам некоторый доступ к некоторым анонимным данным - если это действительно для академических исследования, тогда почему бы вам не связаться с facebook напрямую и не спросить, есть ли у них такая программа? - person Soren; 26.07.2011

Я не знаю, почему вы хотите использовать wget ..facebook предлагает отличный API.

wget --user-agent=Firefox http://www.facebook.com/markzuckerberg

сохранит общедоступный контент в файл.

вам следует подумать об использовании их API.

Разработчики Facebook

person Vamsi Krishna B    schedule 25.07.2011
comment
Спасибо, Криш. К сожалению, это не работает, поскольку он дает мне файл (где имя файла - это имя пользователя), в котором нет информации, которая также, если бы я лгал Facebook, изменяя пользовательский агент, Facebook фактически не возражал бы при поиске реального разрешение на сканирование (поскольку это моя конечная цель)? Я пытаюсь использовать wget, потому что больше ничего не знаю. Было бы очень полезно любое другое предложение - я ищу все, что могло бы работать из сценария или программы. - person rogerchucker; 26.07.2011
comment
Криш, API Facebook требует токена доступа каждого пользователя, профиль которого я пытаюсь получить. Это было бы непрактично при ненавязчивом сборе данных. - person rogerchucker; 26.07.2011

Если вы хотите сохранить страницу, на которой выполнен вход, вы можете войти в систему с помощью Firefox, выбрав «Оставаться в системе», затем скопировать эти файлы cookie в файл и использовать их с параметром cookiejar. У вас по-прежнему будет довольно много содержимого, загруженного динамическим скриптом, которое WGET не собирается сохранять.

Есть много способов снять шкуру с этой кошки. Если вам нужно извлечь конкретный элемент, ознакомьтесь с API. Если вы просто хотите заархивировать снимок страницы, как он будет отображаться в веб-браузере, попробуйте CutyCapt. Это очень похоже на wget, за исключением того, что он анализирует весь документ, как веб-браузер, и сохраняет изображение страницы.

person David    schedule 11.01.2013

Проверьте следующие проекты с открытым исходным кодом:

  • facebook-cli, это служебная программа командной строки для взаимодействия с API Facebook.
  • facebook-friends, который может создать HTML-страницу всех ваших друзей на Facebook.
person kenorb    schedule 15.01.2019

Вы можете легко повторно использовать файлы cookie Firefox для входа в систему, см.

Кто может видеть ваш список друзей, можно настроить, поэтому, если кто-то настроит его только для друзей, вы не сможете извлечь эту информацию.

Также я рекомендую использовать мобильный сайт, который использует разбиение на страницы вместо загрузки AJAX и имеет гораздо более простой и меньший HTML: https://m.facebook.com/USER/friends?startindex=24

И вот (очень ограничительные) условия очистки: https://www.facebook.com/apps/site_scraping_tos_terms.php

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 26.05.2016

Чтобы загрузить страницу Facebook с помощью wget, вы можете использовать Chrome DevTools в своем веб-браузер (также в Firefox, Opera и др.).

Во-первых, вам нужно преобразовать его в команду curl, перейдя на вкладку Сеть (обновить страницу, если необходимо, или отметьте Сохранить журнал), найдите страницу интересующих вас (вы можете отфильтровать список), щелкните правой кнопкой мыши запрос / страницу, затем выберите Скопировать как cURL. Затем вставьте команду в терминал.

Чтобы преобразовать формат curl в wget, выполните следующие преобразования:

  • удалить параметр --compress,
  • поменяйте -H на --header во всех местах.

Также можно добавить следующие wget параметры:

  • -k или --convert-links, чтобы преобразовать ссылки в документе, чтобы сделать их пригодными для локального просмотра.
  • -p или --page-requisites, чтобы загрузить все файлы, необходимые для правильного отображения страницы.

Смотрите также:

person kenorb    schedule 15.01.2019