Всем привет,
Если кто еще не в курсе о такой штуке как Selenium -библиотека Python позволяет открывать сайты удаленно, собирать с них информацию, имитировать мышку и клавиатуру. В условиях нынешних блокировок и детектеров ВПН на многих сайтах работает например в связке VPS + firefox -headless + selenium.
Грамотно написанная программа не детектится как crawler (робот-ползун), поскольку сидим на firefox
То есть, арендуем самый простенький сервер с ОС Линукс, где нам необходимо, и далее:
(примеры кода с системы Debian 10)
Пример скрипта:
То есть в примере данной программы наша программа делает сама по себе следующие шаги:
1) driver.get() - загружает сайт
2) WebDriverWait() ждет 10 секунд чтобы страница прогрузилась
3) wait.until(EC.element_to_be_clickable()) рассмотрев нужный нам элемент разметки в режиме разработчика в нормальном браузере - убеждаемся что элемент загрузился (в нашем случае это кнопка, button)
4) driver.save_screenshot() сохраняем скриншот страницы
5) ActionChains - нажимаем клавиши с задержкой в 1 секунду между нажатиями, перемещаясь между элементами страницы с помощью клавиши TAB
6) sleep(10) - после отправки формы ждем 10 секунд для загрузки дальнейшего динамического контента страницы
Библиотека включает в себя многие другие функции, управление мышью, колесиком мыши, клавишами мыши. Здесь только ваше воображение является пределом
По большому счету работаем "в перчатках", программа выполняет действия за вас
Если кто еще не в курсе о такой штуке как Selenium -библиотека Python позволяет открывать сайты удаленно, собирать с них информацию, имитировать мышку и клавиатуру. В условиях нынешних блокировок и детектеров ВПН на многих сайтах работает например в связке VPS + firefox -headless + selenium.
Грамотно написанная программа не детектится как crawler (робот-ползун), поскольку сидим на firefox
То есть, арендуем самый простенький сервер с ОС Линукс, где нам необходимо, и далее:
(примеры кода с системы Debian 10)
Bash:
root@me:~$ apt install python3-pip
root@me:~$ pip3 install selenium
root@me:~$ apt install firefox
Пример скрипта:
Python:
import time
from time import sleep
from time import time
import sys
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.by import By
from selenium.common import NoSuchElementException, ElementNotInteractableException
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = FirefoxOptions()
options.add_argument("-headless")
options.add_argument("--width=1920")
options.add_argument("--height=1080")
with webdriver.Firefox(options=options) as driver:
driver.get("https://example.com")
#print(driver.page_source)
wait = WebDriverWait(driver, timeout=10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[class='input")))
driver.save_screenshot('/root/client/page1.png')
sleep(1)
ActionChains(driver)\
.key_down(Keys.TAB)\
.key_up(Keys.TAB)\
.perform()
sleep(1)
ActionChains(driver)\
.send_keys("SECReT")\
.perform()
sleep(1)
ActionChains(driver)\
.key_down(Keys.ENTER)\
.key_up(Keys.ENTER)\
.perform()
sleep(10)
То есть в примере данной программы наша программа делает сама по себе следующие шаги:
1) driver.get() - загружает сайт
2) WebDriverWait() ждет 10 секунд чтобы страница прогрузилась
3) wait.until(EC.element_to_be_clickable()) рассмотрев нужный нам элемент разметки в режиме разработчика в нормальном браузере - убеждаемся что элемент загрузился (в нашем случае это кнопка, button)
4) driver.save_screenshot() сохраняем скриншот страницы
5) ActionChains - нажимаем клавиши с задержкой в 1 секунду между нажатиями, перемещаясь между элементами страницы с помощью клавиши TAB
6) sleep(10) - после отправки формы ждем 10 секунд для загрузки дальнейшего динамического контента страницы
Библиотека включает в себя многие другие функции, управление мышью, колесиком мыши, клавишами мыши. Здесь только ваше воображение является пределом
По большому счету работаем "в перчатках", программа выполняет действия за вас
Последнее редактирование: