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 man). напр. wget -U Mozilla http://....

Второ, настройката за поверителност на Facebook рядко ви позволява да четете каквато и да е/много информация, освен ако не сте влезли като потребител и вероятно само като потребител, който е приятел на профила, който се опитвате да изтриете.

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

person Soren    schedule 25.07.2011
comment
Ако човек, който не е в моята мрежа, публикува списъка с приятелите си, това все още ли е лична информация от гледна точка на Facebook? - person rogerchucker; 26.07.2011
comment
Първо мислех да премина по маршрута на Facebook API (по-специално Graph API), но изглежда, че цялата информация за приятели изисква токен за достъп и исках да направя това незабележимо. Това би ли било в нарушение на политиката на Facebook, дори ако е строго академично изследване? - person rogerchucker; 26.07.2011
comment
Общото правило за данните във facebook чрез API на Facebook е просто -- ако можете да ги получите чрез API на Facebook, това са или данни, до които ви е предоставен достъп, или данни, които са публични. Повечето на 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 с избрано „Дръж ме в системата“, след което да копирате тези бисквитки във файл и да ги използвате с опцията 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

Можете лесно да използвате повторно бисквитките на 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