Оглавление:

Создание веб-сайта Ajax с помощью формы асинхронного входа: 6 шагов (с изображениями)
Создание веб-сайта Ajax с помощью формы асинхронного входа: 6 шагов (с изображениями)

Видео: Создание веб-сайта Ajax с помощью формы асинхронного входа: 6 шагов (с изображениями)

Видео: Создание веб-сайта Ajax с помощью формы асинхронного входа: 6 шагов (с изображениями)
Видео: Форма обратной связи на PHP, Ajax, JavaScript и Bootstrap 4 / Изучение Ajax за 30 минут! 2024, Декабрь
Anonim
Публикация веб-сайта Ajax с помощью формы асинхронного входа
Публикация веб-сайта Ajax с помощью формы асинхронного входа

Проблема: инструменты Spidering не поддерживают аутентификацию при входе в систему AJAX.

Это руководство покажет вам, как войти в систему через форму AJAX с использованием Python и модуля под названием Mechanize. Пауки - это программы веб-автоматизации, которые становятся все более популярным способом сбора данных в Интернете. Они ползают по сети, собирая ценные материалы, чтобы подпитывать самые влиятельные интернет-компании. Другие ползают вокруг и собирают определенные наборы данных, чтобы улучшить процесс принятия решений, или сделать вывод о том, что в настоящее время «в ходу», или найти самые дешевые маршруты путешествий. Пауки (веб-сканеры, веб-боты или скребки экрана) отлично подходят для превращения HTML-goop в некое подобие интеллектуальных данных, но у нас возникает проблема, когда речь идет о веб-страницах с поддержкой AJAX, на которых есть сеансы с поддержкой JavaScript и файлов cookie, по которым нельзя перемещаться в обычном режиме. набор паучьих инструментов. В этом руководстве мы будем получать доступ к нашей собственной странице участника на pubmatic.com. Эти шаги покажут вам способ, которым нужно следовать, но ваша страница будет другой. Повеселись!

Шаг 1. Соберите материалы

Собирать материалы
Собирать материалы

Вам нужно будет начать пополнять свои ресурсы по программированию. Вам понадобятся следующие программы. Используйте их руководства, чтобы помочь вам установить эти… Установить FirebugЭто надстройка для FirefoxУстановить PythonПерейти на: python.org Перейти на: python.orgУстановить модуль Mechanize Получить Mechanize Получить MechanizeДругие полезные инструменты Spidering: BeautifulSoup

Шаг 2: Найдите заголовки, необходимые для создания сеанса

Хорошо созданный паук будет обращаться к веб-странице, как если бы это был браузер, управляемый человеком, скрывающим подсказки о его истинном происхождении. Часть взаимодействия между браузерами и серверами происходит через запросы GET и POST, которые вы можете найти в заголовках (эта информация редко отображается в браузере, но очень важна). Вы можете просмотреть эту информацию, нажав Ctrl I (в firefox), чтобы открыть окно информации о странице. Чтобы замаскироваться под скромного браузера, вы должны идентифицировать себя, используя те же учетные данные. Если вы попытались войти в pubmatic с отключенным javascript в вашем браузере, вы не продвинетесь далеко, поскольку перенаправления выполняются через javascript. Поэтому, учитывая, что большинство браузеров-пауков не имеют интерпретаторов javascript, нам придется пройти через логин через альтернативный маршрут. Начнем с получения информации заголовка, отправляемой из браузера, когда вы нажимаете кнопку «Отправить». Если бы это был обычный вход в браузер, вы бы использовали Mechanize, чтобы заполнить форму и щелкнуть «Отправить». Обычные формы входа заключены в тег…, и Mechanize сможет без проблем отправить его и опросить следующую страницу. Поскольку у нас нет тега заполненной формы, функция отправки обрабатывается javascript. Давайте проверим функцию submitForm pubmatic. Для этого сначала откройте веб-страницу в firefox и включите firebug, щелкнув светлячка в правом нижнем углу. Затем щелкните вкладку сценария, скопируйте весь появившийся код и вставьте его в свою любимую программу для редактирования текста. Затем вы можете удалить весь код, кроме функции submitForm. Она начинается с функции submitForm (theform) {"и всего, что между ней и функциями, закрывающими фигурную скобку"} ". Анализируя эту функцию очень примитивно, мы замечаем, что происходит некоторая аутентификация, возвращающая переменную с именем xmldoc, которая анализируется как xml. Это ключевая особенность AJAX: он опросил сервер и вернул некоторый XML-документ, содержащий дерево информации. Узел session_id содержит session_id, если аутентификация прошла успешно, вы можете определить это, посмотрев на этот бит кода: «if (session_id! = Null) {// вход в систему успешно». Теперь мы хотим, чтобы этот фрагмент javascript не уносил нас куда-либо, чтобы мы могли видеть, что отправляется на сервер во время аутентификации. Для этого мы закомментируем любые перенаправления окон, которые выглядят следующим образом: «window.location =…». Чтобы закомментировать это, добавьте перед ними двойную косую черту, например: "//window.location…", это предотвращает запуск кода. Вы можете скачать нижеприведенный файл Javascript, в который уже внесены эти изменения. Скопируйте и вставьте этот отредактированный фрагмент JavaScript в правую часть окна консоли и нажмите «Выполнить». Это отменяет функцию javascript, которая уже находится на странице с нашей новой версией. Теперь, когда вы заполняете свои учетные данные и нажимаете кнопку «Отправить», вы должны увидеть, что информация заголовков POST и GET заполняет консоль, но вы никуда не пойдете. Информация POST - это информация, передаваемая на сервер функциями AJAX, вы хотите, чтобы как это возможно, скопируйте и вставьте эту информацию в блокнот.

Шаг 3. Подготовьте код

Прежде чем мы добавим новые заголовки, которые мы нашли, давайте создадим шаблонный код Python для входа в систему Mechanize. Мы делаем это по двум причинам: во-первых, у нас есть компонент, который работает для добавления нового материала, а во-вторых, чтобы вы могли видеть, как вы обычно входите на веб-страницу, отличную от AJAX-y. Откройте блокнот или аналог, скопируйте и вставьте следующий. Когда вы закончите, сохраните его как youfilename.py где-нибудь, где вы можете найти. #! / Usr / bin / python # - * - coding: utf-8 - * - # Начните с импорта вашего модуля: from Mechanize import Browser # Создайте свой экземпляр браузера через вызов функции Browser (); br = Browser () # Настройте браузер так, чтобы он игнорировал запросы spiders.txt # Делайте это осторожно, если веб-странице не нравятся пауки, они могут расстроиться, найдя вас тамbr.set_handle_robots (False) # Откройте страницу, на которую вы хотите войти tobr.open ("https://pubmatic.com/04_betasignin.jsp") # Поскольку я знаю имя формы, я могу просто выбрать форму по имениbr.select_form ("login") # Используя имена элементов формы, я ввожу имена элементов формыbr ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () отправляет форму и вытягивает получившуюся страницу, вы создаете новый экземпляр браузера # ответ ниже содержит полученную страницуresponse = br.submit () # Будет напечатано тело полученной веб-страницы # print response.read ()

Шаг 4: Отправьте правильные сигналы

Отправляйте правильные сигналы
Отправляйте правильные сигналы

У Mechanize есть простая функция добавления заголовков к заголовкам POST, это позволит нам открываться в том же браузере, который вы использовали для доступа к странице в первый раз. Откройте файл с заголовками, которые вы нашли с помощью Firebug, и отредактируйте этот текстовый файл, чтобы он соответствовал. Замените все в кавычках на соответствующий элемент из списка заголовков: USER_AGENT = "Mozilla / 5.0 (X11; U; Linux i686; tr-TR; rv: 1.8.1.9) Gecko / 20071102 Pardus / 2007 Firefox / 2.0.0.9" HOST = "pubmatic.com" ACCEPT = "text / xml, application / xml, application / xhtml + xml, text / html; q = 0.9, text / plain; q = 0.8, image / png, * / *; q = 0,5 "ACCEPT_LANGUAGE =" en-us, en; q = 0,5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0,7, *; q = 0,7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-alive" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.12121040; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (прямая) | utmcsr = (прямая) | utmcmd = (нет); JSESSIONID = 60F194BE2CATT45 = 60F194BE2CATT45; no-cache "CACHE_CONTROL =" no-cache "Создает набор переменных, которые затем можно использовать для добавления в заголовок us используя этот код: br.add_header = [("Host", HOST)] br.add_headers = [("User-agent", USER_AGENT)] br.add_headers = [("Accept", ACCEPT)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive ", KEEP_ALIVE)] br.add_headers = [(" Connection ", CONNECTION)] br.add_header = [(" Content-Type ", CONTENT_TYPE)] br.add_header = [(" Referer ", REFERER)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Теперь, когда мы вызываем функцию открытия страницы, заголовки также будут отправляться на сервер. br.open ("https://pubmatic.com/04_betasignin.jsp")

Шаг 5: Механизированные файлы cookie

Механизированные файлы cookie
Механизированные файлы cookie

Этот шаг связан с тем, что Mechanize автоматизирует обработку файлов cookie, но важно знать, что происходит:

Когда форма отправлена, у вас есть правильные заголовки, как если бы вы отправляли с помощью функции javascript. Затем сервер аутентифицирует эту информацию, генерирует идентификатор сеанса и сохраняет его в файле cookie, если имя пользователя и пароль верны. Хорошая новость заключается в том, что Mechanize автоматически съедает и генерирует файлы cookie, поэтому вам не нужно беспокоиться об отправке и получении файлов cookie. Итак, как только вы создадите работающий идентификатор сеанса, вы сможете войти в раздел веб-сайта только для участников.

Шаг 6: ключ к сердцу

Теперь, когда мы получили идентификатор сеанса, и Mechanize сохранил его в файлах cookie, мы можем следить за javascript, чтобы увидеть, куда нам нужно двигаться. Заглянем внутрь «if (session_id! = Null) {// Успешный вход», чтобы увидеть, куда двигаться дальше. Глядя на код перемещения окна: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " мы видим, что нам нужно перейти на сайт, расположенный по адресу https://pubmatic.com/05_homeloggedin.jsp?v=some random number. Итак, давайте просто создадим поддельное случайное число для ввода и создадим новый экземпляр браузера для чтения только что открытой страницы: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") И это должно будь то. Теперь ваш код готов, используя правильные заголовки и обработчик файлов cookie, мы можем получить доступ к внутренностям pubmatic. Откройте терминал, загрузите пакет python ниже и войдите в систему. Для этого введите python2.5, а затем путь к файлу.py.

Рекомендуемые: