Сводная информация о методах входа в систему, смоделированных поисковым роботом Python

задняя часть рептилия Selenium Fiddler

Резюме:При сканировании, в дополнение к обычным веб-сайтам, которые можно сканировать без входа в систему, существует также тип веб-сайтов, для которых сначала необходимо войти в систему. Например, Douban, Zhihu и Juzi.com в предыдущей статье. Этот тип веб-сайтов можно разделить на: нужно только ввести пароль учетной записи, в дополнение к паролю учетной записи необходимо ввести или нажать код подтверждения и другие типы. В этой статье в качестве примера используется Juzi.com, который может войти в систему только путем ввода пароля учетной записи, и представлены три часто используемых метода имитации входа в систему.

  • Метод POST-запроса: необходимо получить URL-адрес входа в фоновом режиме и заполнить параметры тела запроса, а затем POST-запрос для входа в систему, что относительно проблематично;
  • Метод добавления файлов cookie: сначала войдите в систему и добавьте полученные файлы cookie в заголовки, а затем используйте метод GET для запроса входа в систему, что является наиболее удобным;
  • Симуляция входа в Selenium: вместо ручного ввода номера учетной записи и пароля выполняется автоматически, что является простым, но относительно медленным.

Ниже мы используем код для реализации трех вышеуказанных методов соответственно.

1. Целевая страница

Это веб-страница, на которую мы хотим получить контент:

radar.itjuzi.com/investevent

Чтобы увидеть информацию о данных, необходимо войти на эту веб-страницу.Интерфейс входа выглядит следующим образом:

Как видите, вам нужно только ввести номер учетной записи и пароль для входа в систему, не вводя код подтверждения, что относительно просто. Затем мы используем тестовую учетную запись и пароль для имитации входа в систему.

2. POST отправить запрос на вход

Во-первых, нам нужно найти URL-адрес POST-запроса.

Есть два способа: первый — просмотреть запрос в инструментах разработки веб-страницы, а второй — просмотреть его в программном обеспечении Fiddler.

Поговорим о первом способе.

Введите пароль учетной записи в интерфейсе входа, откройте инструменты разработчика, очистите все запросы, а затем нажмите кнопку входа, после чего вы увидите, что создается большое количество запросов. Какой URL-адрес POST-запроса? Это требует небольшого опыта, потому что это логин, поэтому попробуйте нажать на запрос со словом «логин». Здесь мы нажимаем на четвертый запрос, и вы можете увидеть запрошенный URL-адрес в заголовках справа.Метод запроса - тип POST, что указывает на то, что URL-адрес найден правильно.

Далее мы спускаемся к данным формы, где есть несколько параметров, в том числе идентификация и пароль, эти два параметра — это учетная запись и пароль, которые нам нужно ввести при входе в систему, то есть параметры, которые должен нести запрос POST.

Конструкция параметра очень проста, далее вам нужно только использовать метод Requests.post для запроса входа на сайт, а затем вы можете сканировать контент.

Ниже мы пытаемся получить запрос POST с помощью Fiddler.

Если вы не знакомы с Fiddler или он не установлен на вашем компьютере, вы можете сначала разобраться и установить его.

Fiddler — это клиентский и серверный HTTP-прокси, а также один из наиболее часто используемых инструментов захвата HTTP-пакетов. Он может записывать все HTTP-запросы между клиентом и сервером, анализировать данные запроса, устанавливать точки останова, отлаживать веб-приложения, изменять запрошенные данные и даже изменять данные, возвращаемые сервером для определенного HTTP-запроса. мощный Это мощный инструмент для веб-отладки.

Адрес загрузки скрипача:

Woohoo.тел Erik.com/download/FI…

Используйте учебник:

zhuanlan.zhihu.com/p/37374178

Woohoo.Hangge.com/blog/Уборка автомобилей/…

Далее мы перехватываем запрос на вход через Fiddler.

Когда вы нажмете, чтобы войти, на официальной странице Fiddler вы увидите, что слева было перехвачено большое количество запросов. По наблюдениям, URL-адрес 15-го запроса содержит поле «логин», которое, вероятно, является POST-запросом для входа в систему. Мы нажимаем запрос, возвращаемся вправо, нажимаем «инспекторы» и «заголовки» соответственно, мы видим, что это запрос POST, и URL-адрес совпадает с URL-адресом, полученным вышеуказанным методом.

Затем переключитесь на опцию Webforms справа, и вы увидите тело запроса Body. Он также такой же, как и полученный вышеописанным способом.

После получения URL-адреса и параметров тела запроса вы можете начать имитировать вход в систему с помощью метода Requests.post.

код показывает, как показано ниже:

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
    }
data = {
    'identity':'irw27812@awsoo.com',   
    'password':'test2018',
}
url ='https://www.itjuzi.com/user/login?redirect=&flag=&radar_coupon='
session = requests.Session()
session.post(url,headers = headers,data = data)
# 登录后,我们需要获取另一个网页中的内容
response = session.get('http://radar.itjuzi.com/investevent',headers = headers)
print(response.status_code)
print(response.text)

Используйте метод session.post для отправки запроса на вход, а затем используйте метод session.get для запроса целевой страницы и вывода HTML-кода. Видно, что содержимое веб-страницы успешно получено.

Далее вводится второй метод.

3. Получите файлы cookie и запросите вход напрямую

В приведенном выше методе нам нужно перейти в фоновый режим, чтобы получить ссылку и параметры запроса POST, что более проблематично. Затем мы можем попробовать сначала войти в систему, получить файл cookie, затем добавить файл cookie в заголовки, а затем использовать метод GET для запроса, процесс намного проще.

код показывает, как показано ниже:

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
    'Cookie': '你的cookie',
}
url = 'https://www.itjuzi.com/user/login?redirect=&flag=&radar_coupon='
session = requests.Session()
response = session.get('http://radar.itjuzi.com/investevent', headers=headers)

print(response.status_code)
print(response.text)

Как видите, после добавления куки вам не нужно делать POST-запрос, вы можете напрямую ПОЛУЧИТЬ целевую страницу. Как видите, содержимое веб-страницы также можно успешно получить.

Третий способ описан ниже.

4. Имитация входа в Selenium

Этот метод очень прост: вместо ручных методов используется Selenium для автоматического ввода пароля учетной записи, а затем входа в систему.

Использование Selenium подробно описано в предыдущей статье, если вы с ним не знакомы, то можете ознакомиться с ним:

Woohoo.Ma Kongchengyun.top/Web_scrap в…

код показывает, как показано ниже:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Chrome()
browser.maximize_window()  # 最大化窗口
wait = WebDriverWait(browser, 10) # 等待加载10s

def login():
    browser.get('https://www.itjuzi.com/user/login')
    input = wait.until(EC.presence_of_element_located(
        (By.XPATH, '//*[@id="create_account_email"]')))
    input.send_keys('irw27812@awsoo.com')
    input = wait.until(EC.presence_of_element_located(
        (By.XPATH, '//*[@id="create_account_password"]')))
    input.send_keys('test2018')
    submit = wait.until(EC.element_to_be_clickable(
        (By.XPATH, '//*[@id="login_btn"]')))
    submit.click() # 点击登录按钮
    get_page_index()

def get_page_index():
    browser.get('http://radar.itjuzi.com/investevent')
    try:
        print(browser.page_source)  # 输出网页源码
    except Exception as e:
        print(str(e))
login()

Здесь мы сначала находим местоположение узла учетной записи на веб-странице:'//*[@id="create_account_email"]', а затем используйте метод input.send_keys для ввода номера учетной записи.Точно так же найдите расположение поля пароля и введите пароль. Затем найдитеАвторизоватьсяРасположение кнопки://*[@id="login_btn"], а затем используйте метод submit.click() для реализации операции нажатия кнопки входа в систему для завершения входа. Как видите, содержимое веб-страницы также можно успешно получить.

Выше приведены несколько способов имитации необходимости авторизации на веб-сайте. После входа в систему вы можете начать сканирование необходимого контента.

5. Резюме:

  • В этой статье реализуются три метода имитации входа в систему соответственно, и рекомендуется сначала выбрать второй метод, то есть сначала метод получения файлов cookie, а затем запрос прямого входа в систему с помощью Get.
  • В этой статье имитируется вход на веб-сайт, требуется только ввести пароль учетной записи, не требуется получать соответствующие параметры шифрования, такие как Authenticity_token. В то же время нет необходимости вводить код подтверждения, поэтому метод относительно прост. Тем не менее, есть еще много веб-сайтов, которым необходимо иметь дело с параметрами шифрования, вводом кода подтверждения и другими проблемами при имитации входа в систему. Он будет представлен позже.

Рекомендуемое чтение:

Эта статья закончилась.

Добро пожаловать в долгое нажатие, чтобы идентифицировать и подписаться на мой официальный аккаунт