Авторизуйтесь на сайте, чтобы проанализировать информацию о пользователе - PullRequest
1 голос
/ 12 марта 2012

Я пытаюсь выяснить, как войти на защищенный веб-сайт, чтобы проанализировать пользовательские данные, и я не могу найти конкретный пример того, как это сделать. Я хотел бы написать это на PHP, но многие поиски ничего не нашли для этого языка. Я знаком с Python и чувствую, что, возможно, это будет более полезным в этом сценарии. Также кажется, что многие сайты имеют API, специфичные для этого сайта для входа в систему. Но поиск и использование определенных API-интерфейсов, похоже, требует больше работы для чего-то, что я мог бы написать, а затем адаптировать.

Например: Как я могу программно войти в stackoverflow и затем проанализировать мой профиль, чтобы получить общее количество последовательных дней, в которые я вошел.

Использование Simple_HTML_DOM Я написал это, которое использовал ранее для анализа незащищенного HTML

<?php
include_once('simple_html_dom.php');
$html = file_get_html("http://stackoverflow.com/users/779920/nick");    
foreach($html->find('[class=days-visited]') as $e)
    echo $e->outertext . '<br>';
?>

Но в этом случае это не работает. Я не уверен, что это на правильном пути, но я пытался познакомиться с данными POST, используя Firebug для Chrome, но инструмент довольно сложен для меня сейчас, и я не совсем уверен, как правильно расшифровать данные, которые я ' м дан.

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 12 марта 2012

Я думаю, что это зависит от того, какую именно систему использует страница для аутентификации, но вот фрагмент, который я недавно использовал для точно такой же вещи.В моем случае я просто хотел загрузить страницу:

# An example website
domain = 'http://secure.website.com'
url = domain + '/web/page.html'
# Create a new authentication handler
auth_handler = urllib.request.HTTPBasicAuthHandler()
# Set the login username and password
auth_handler.add_password(None, domain, user='username', passwd='password')
# Create and install a new opener for the handler
opener = urllib.request.build_opener(auth_handler)
urllib.request.install_opener(opener)
# Connect to the page
conn = urllib.request.urlopen(url)
# Read all data on the webpage
page = conn.readall().decode()
# close the connection
conn.close()

Я отсылаю вас к документации urllib (для python3. В python2 это urllib2 ),Это достаточно хорошо задокументировано, хотя мне потребовалось немного проб и ошибок, чтобы выяснить, какие именно шаги мне понадобились.Обратите внимание, что обработчик аутентификации должен обрабатывать только права root, в которые вы входите (в этом случае http://secure.website.com). После того, как вы установили обработчик, он распознает все страницы, принадлежащие этому домену, и использует предоставленную информацию аутентификации. Также помните, чтоэто не так уж и безопасно - любой, у кого есть доступ к коду, сможет увидеть ваши данные для входа.

Если вы впоследствии захотите проанализировать веб-страницу, вы можете использовать html.parser (или версия python2, HTMLParser ), или гораздо более мощная BeautifulSoup .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...