(Python selenium) Преодоление проверки возраста Steam

#python #selenium #selenium-webdriver #web-scraping #beautifulsoup

#python #селен #selenium-webdriver #очистка веб-страниц #beautifulsoup

Вопрос:

Я новичок в программной и веб-обработке. Я хочу написать программу, которая посещает некоторые самые продаваемые игры и извлекает содержимое обзоров, но когда она пытается посетить игры с рейтингом M, моя программа просто перенаправляется на страницу проверки возраста. Поэтому я использую selenium для нажатия некоторых кнопок, чтобы я мог пройти проверку возраста.

Это пример:

 IDlist = ['730','1085660']
chrome = webdriver.Chrome('./chromedriver')
for i in IDlist:
    url = 'https://steamcommunity.com/app/%s/reviews/?l=englishamp;browsefilter=topratedamp;snr=1_5_100010_' %i
    chrome.get(url)

    #the age check page                   
    chrome.find_element_by_css_selector('#ViewAllForApp').click()
    chrome.find_element_by_css_selector('#age_gate_btn_continue').click()                                    
    
    for x in range(1,5):
        chrome.execute_script('window.scrollTo(0,document.body.scrollHeight);')
        time.sleep(2)    
    soup = BeautifulSoup(chrome.page_source, 'html.parser')
       .
       .
       .
 

Первая игра (ID = 730) работает, но проблема в том, что когда я захожу во вторую игру (ID = 1085660), в ней нет страницы проверки возраста и появляется следующее сообщение об ошибке, подобное этому:

 NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#ViewAllForApp"}
  (Session info: chrome=87.0.4280.88)
 

Как я могу избежать этой проблемы? if-else ?
Или попробуйте другие методы, чтобы пройти проверку возраста? (например. добавить cookies )

Ответ №1:

Глядя на проверку возраста Steam, вы должны быть в состоянии установить cookie

lastagecheckage на 1-0-1900 path=/ ;

birthtime на -2211667760 path=/ ;

и

wants_mature_content в 1 путь к приложению или /

перед посещением страницы магазина или при инициализации любой используемой HTTP-библиотеки, чтобы эффективно обойти перенаправление проверки возраста.

Не игнорируйте пути, они важны. Их несоблюдение может привести к бесконечному циклу перенаправления.

Для тестирования:

 document.cookie = "wants_mature_content=1"; 
document.cookie = "lastagecheckage=1-0-1900; path=/"; 
document.cookie = "birthtime=-2211667760; path=/";
 

В консоли JavaScript вашего браузера, например, https://store.steampowered.com/app/271590/ (GTA V)

Вы можете поэкспериментировать с lastagecheckage birthtime файлами cookie и, перейдя в режим «инкогнито» и просмотрев файлы cookie на вкладке «Приложение» или «Сеть» в среде отладки в заголовке с ограниченным возрастом. Тем не менее, это должно сработать.