Брат Хун уже упоминал о механизме защиты от сканирования. После добавления различных параметров все еще возникала проблема с загрузкой файла сценария js. Иногда брат Хун, казалось, находил способ решить эту проблему, сказал брат Хун. чтобы попробовать. Давайте посмотрим, сработает ли это, на случай, если это произойдет. В результате брат Хун попробовал, и результат действительно был хороший, но брат Хун смог запустить его в первый раз, но не после этого. Затем он закрыл редактор и перезапустил его, и брат Хун снова догадался, что это сработало. Возможно, это проблема с буферизацией, но конкретная причина по-прежнему не найдена. Поэтому я добавлю обновление, чтобы записать, как это решить. А недавно некоторые пользователи сканера отправили брату Хонгу личное сообщение: «При использовании драматурга было упомянуто, что драматург — это браузер, который по умолчанию открывается в режиме инкогнито. Многие веб-сайты имеют механизмы защиты от сканирования, и эти функции не работают должным образом при открытии в режиме инкогнито. режим использования. Спросите брата Хонга, есть ли у него какие-нибудь хорошие идеи. Брат Хун ответил, что на данный момент хорошего решения нет, и он не знает, поможет ли им решение брата Хун или будет ли оно иметь для них справочную ценность.
playwright предоставляет метод launch_persistent_context для запуска браузера, который может запускать браузер в режиме не инкогнито.
Запуск браузера в режиме инкогнито подходит для тех, кто занимается автоматизированным тестированием.
Запуск браузера в режиме не инкогнито подходит некоторым пользователям сканера.
Метод launch() запускает браузер в режиме инкогнито.
Справочный код выглядит следующим образом:
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''
# 3. Импортировать модули
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.cnblogs.com/du-hong")
# do ....
page.pause()
browser.close()
При запуске браузера в режиме инкогнито в правом верхнем углу браузера появится «Режим инкогнито», как показано на рисунке ниже:
Если веб-сайт распознается или отслеживается, а режим инкогнито использовать невозможно, вы можете использовать метод launch_persistent_context() для запуска браузера в режиме неинкогнито.
Соответствующее описание параметра:
Справочный код выглядит следующим образом:
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''
# 3. Импортировать модули
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome"
)
page = browser.new_page()
page.goto("https://www.cnblogs.com/du-hong")
# do ....
page.pause()
browser.close()
Брат Хонг обнаружил, что после запуска приведенного выше кода появится дополнительная пустая страница. Как показано ниже:
Войдя в метод launch_persistent_context, мы обнаружили, что использование метода launch_persistent_context автоматически открывает страницу вкладки, а следующий код браузера.new_page() повторно открывает новый объект страницы. Вот почему есть дополнительная пустая страница.
Решение простое: просто удалите код браузера.new_page(). По умолчанию откройте объект вкладки напрямую.
Справочный код выглядит следующим образом:
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''
# 3. Импортировать модули
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome"
)
page = browser.pages[0]
page.goto("https://www.cnblogs.com/du-hong")
# do ....
page.pause()
browser.close()
Запустите код, как показано ниже:
Здесь Хонгге также использует предыдущий пример для демонстрации, который является примером статьи, в которой в конце статьи упоминается антисканер: Ctrip, слайд на странице проверки номера мобильного телефона, для выполнения реального проекта. Как показано ниже:
Обратитесь к ранее упомянутому методу для разработки кода следующим образом:
# coding=utf-8🔥
# 1. Сначала установите кодировку UTF-8, которая поддерживает китайский и английский языки, как указано выше, обычно они располагаются в первой строке.
# 2. Примечания: включая время создания записи, автора и название проекта.
'''
Created on 2023-10-10
@author: Пекин-Хонге Группа связи QQ: 705269076
Паблик аккаунт: Пекин Хонге
Project: 《Первый взгляд на серию «Последний выпуск» — автоматическое тестирование Python + Playwright — 21 — обработка перетаскивания мышью — дополнительная глава
'''
# 3. Импортировать модули
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=f"C:\\Users\\DELL\\Desktop\\Chrome\\test",
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome"
)
page = browser.pages[0]
page.goto("https://passport.ctrip.com/user/member/fastOrder")
page.wait_for_timeout(2000)
#Получаем положение кнопки перетаскивания и перетаскиваем //*[@id="slider"]/div[1]/div[2]
dropbutton=page.locator("//*[@id='slider']/div[1]/div[2]")
box=dropbutton.bounding_box()
page.mouse.move(box['x']+box['width']/2,box['y']+box[ 'height']/2)
page.mouse.down()
mov_x=box['x']+box['width']/2+280
page.mouse.move(mov_x,box['y']+box[ 'height']/2)
page.mouse.up()
page.wait_for_timeout(3000)
browser.close()
with sync_playwright() as playwright:
run(playwright)
1. Запустите код, щелкните правой кнопкой мыши «Выполнить тест», и вывод консоли будет таким, как показано ниже:
2. Действие браузера на компьютере после запуска кода (хорошо видно действие после скольжения,Появляться“Проверка успешна, пройдена”слова,Вместо появившегося ранее антикраулерного механизма,Проверка выбора слова снова всплывает). Как показано ниже:
Хорошо, теперь все готово, и проблема решена.
1. Почему нельзя использовать браузер.new_context() для создания контекста для объекта браузера, созданного с помощью launch_persistent_context?
Поскольку launch_persistent_context буквально означает объект контекста контекста, контекст не может быть создан, можно создать только объект страницы.
2. Какова роль параметра пути user_data_dir?
user_data_dir указывает каталог кэша пользовательских данных для запуска браузера. Когда указан новый каталог, файл кэша будет автоматически создан при запуске браузера. Откройте каталог C:\Users\\DELL\Desktop\Chrome\test, и вы увидите загруженный файл кэша браузера. Как показано ниже:
3.Может ли user_data_dir запомнить статус входа пользователя?
user_data_dir — это пользовательские данные, которые вы определяете при открытии браузера и сохраняете их, включая файлы cookie пользователя, поэтому, пока вы входите в систему, они будут автоматически сохраняться. Таким образом, вам нужно только ввести код, чтобы открыть веб-сайт. Если вы не можете автоматически войти в систему с помощью кода (могут быть какие-то коды проверки или что-то в этом роде), вы можете войти в систему вручную после точки останова, и файлы cookie будут запомнены. Вам не нужно входить в систему в следующий раз, когда вы откроете код.
4. Почему я не могу оставаться на этом сайте после выполнения вашего руководства?
Сможете ли вы оставаться в системе, главным образом, зависит от срока действия файлов cookie вашего веб-сайта. Некоторые веб-сайты становятся недействительными после закрытия браузера, например веб-сайты некоторых банков. Вам нужно только закрыть окно браузера, и в следующий раз вам нужно будет снова войти в систему. . Проще говоря: вам нужно сделать это вручную один раз, закрыть браузер и открыть его снова, чтобы войти в систему. Если вам нужно снова войти в систему после закрытия браузера, код не сможет удержать вас в системе. На некоторых сайтах блогов, если вы войдете в систему один раз, файлы cookie будут действительны в течение нескольких месяцев. В этом случае вы можете использовать кэшированные файлы cookie, чтобы оставаться в системе.
5. Почему в других онлайн-руководствах в качестве каталога установки Chrome указывается user_data_dir?
Фактически, нет необходимости прописывать каталог установки Chrome «C:\Users\{getpass.getuser()}\AppData\Local\Google\Chrome\UserData». Если вы записываете пользовательские данные в каталог установки системы по умолчанию, то при открытии локального браузера при выполнении кода будет сообщаться об ошибке. Так что не рекомендуется!
6. Браузер Chromium запускается по умолчанию. Можно ли его поменять на другой браузер?
Браузер можно указать через параметр «канал», который поддерживает серию хрома: chromium, chrome, chrome-beta и msedge.
7. Как настроить развертывание окна?
Добавьте два параметра args=['--start-maximized'] и no_viewport=True, чтобы развернуть окно.
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=f"D:\chrome_userx\yoyo",
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome",
args=['--start-maximized'],
no_viewport=True
)
Или используйте viewport={'width':1920,'height':1080}, чтобы установить разрешение экрана.
browser = p.chromium.launch_persistent_context(
# Укажите адрес локального кэша пользователя
user_data_dir=f"D:\chrome_userx\yoyo",
# Получать события загрузки
accept_downloads=True,
# настраивать GUI модель
headless=False,
bypass_csp=True,
slow_mo=1000,
channel="chrome",
viewport={'width': 1920, 'height': 1080}
)