Доступ запрещен с использованием Selenium и добавления пользовательского агента

#python #python-3.x #selenium #selenium-chromedriver

#python #python-3.x #selenium #selenium-chromedriver

Вопрос:

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

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options

webpage = str('https://www.kroger.com/account/')

options = Options()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0'
options.add_argument('user-agent={0}'.format(user_agent))

driver = webdriver.Chrome('/Path/chromedriver', options=options)
driver.get(webpage)

create = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div/main/section/section/section/button[2]')
create.click()
  

Когда я нажимаю на страницу создания учетной записи (я использую это, чтобы продемонстрировать ошибку, которую я получаю), я попадаю на эту страницу:

Страница, которую я получаю при использовании selenium

И после обновления он выдает мне ошибку.

Веб-страница загрузится, но как только я что-либо сделаю (иногда даже вручную переключаю вкладки между полями), она отключит меня и приведет на страницу «Доступ запрещен». Есть какой-нибудь способ решить это?

РЕДАКТИРОВАТЬ: я добавил код для нажатия кнопки «Создать учетную запись», чтобы отобразить ошибку, которую я получаю, и я также добавил фотографию страницы, на которую она меня отправляет, прежде чем перейти на страницу ошибки.

Ответ №1:

Не совсем ясно, при каких обстоятельствах вы сталкиваетесь со страницей, в доступе к которой отказано. Однако я выполнил ваш usecase, и вот наблюдения:

Блок кода:

 from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-logging"])
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:WebDriverschromedriver.exe')
driver.get('https://www.kroger.com/account/')
print(driver.page_source)
  

Снимок браузера:

kroger

Консольный вывод:

 <html lang="en-us" data-react-helmet="lang" class="hydrated"><head>
  <meta charset="utf-8"><style data-styles="">kds-tooltippable{visibility:hidden}.hydrated{visibility:inherit}</style>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="google-site-verification" content="mLDjWodVihPJXvMAL0-8hcbuNludulWFtLJ5FFFMbyk">
      <meta name="apple-itunes-app" content="app-id=403901186">
      <meta name="theme-color" content="#0067b1">
      <iframe src="javascript:void(0)" title="" style="width: 0px; height: 0px; border: 0px; display: none;"></iframe><script src="https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_US.hc3rLxj9u8o.O/m=auth2/rt=j/sv=1/d=1/ed=1/am=wQE/rs=AGLTcCMtAagp6kGxB19Nep_bTJunj37kww/cb=gapi.loaded_0" async=""></script><script type="text/javascript" src="https://www.kroger.com/resources/0f06f8547303cb204a2ba5ee8d0c2be4f278e07179439"></script><script type="text/javascript" src="/ruxitagentjs_ICA27SVfghjqrtux_10197200717183318.js" data-dtconfig="rid=RID_-461653321|rpid=-319708356|domain=kroger.com|reportUrl=/rb_7571065c-f052-471e-a3d7-f99d529548bb|app=81222ad3b2deb1ef|agentId=215b1e64d6441901|ssc=1|featureHash=ICA27SVfghjqrtux|vcv=1|rdnt=0|uxrgce=1|cuc=49xey1j6|md=mdcc1=cabTest,mdcc3=bdocument.referrer,mdcc4=bs.visitorID,mdcc6=bs.transactionID,mdcc7=cs_ecid,mdcc8=adiv[data-qa^e^dqsubmit-error^dq] .kds-Message-content,mdcc9=bs_dtm.pageName,mdcc10=cStoreCode,mdcc11=cStoreZipCode,mdcc12=cStoreLocalName,mdcc13=dutm_medium,mdcc14=dutm_campaign,mdcc15=dutm_content,mdcc16=dutm_source,mdcc17=bkrgrData.payload.metaData.campaignID,mdcc18=bsearchCID,mdcc19=ali[data-qa^e^dqCartEstimatedTotal-subTotal^dq],mdcc20=bnavigator.userAgent,mdcc21=cloggedin|lastModification=1597688640250|dtVersion=10197200717183318|tp=500,50,0,1|uxdcw=1500|agentUri=/ruxitagentjs_ICA27SVfghjqrtux_10197200717183318.js"></script><link rel="search" type="application/opensearchdescription xml" href="/osd.xml" title="Kroger">
      <link rel="manifest" href="/site.webmanifest">
      <link rel="apple-touch-icon" href="/apple-touch-icon.png">
  <title>Kroger</title>


  <script src="/sa/kroger-header.d2aa6e624b99b8e4993b.js" defer=""></script>
<script src="/sa/@kroger/account-sign-in.5570149badf101ae09f5.js" defer=""></script>
<script src="/sa/coupons~main.e313a51a37dbad8980b1.js" defer=""></script>
<script src="/sa/products~main.6fd57a24319d5b8ad376.js" defer=""></script>
<script src="/sa/redux~main.b54055dbff5d2dbea98b.js" defer=""></script>
<script src="/sa/internal~main.b6c4b86585460ad2d826.js" defer=""></script>
<script src="/sa/kds~main.a4e3dbc91309d0b1dbb5.js" defer=""></script>
<script src="/sa/time~main.689d89c867b93785cd58.js" defer=""></script>
<script src="/sa/react~main.0f8c529ae5985d95333e.js" defer=""></script>
<script src="/sa/compat~main.a1504007c3b3afabc8e0.js" defer=""></script>
<script src="/sa/common~main.f64c9b672d7d0a00c2d7.js" defer=""></script>
<script src="/sa/vendors~main.725b80732ad8d3325d46.js" defer=""></script>
<script src="/sa/main.240039c3d849b8bd33bc.js" defer=""></script>
  <link data-react-helmet="true" rel="canonical" href="https://www.kroger.com/signin">
  <link rel="stylesheet" href="/sa/vendors~main.d3cc9575af.css">
<link rel="stylesheet" href="/sa/internal~main.00555b7772.css">
<link rel="stylesheet" href="/sa/products~main.a1bfd3c28a.css">
<link rel="stylesheet" href="/sa/coupons~main.c36bbd64b9.css">
<link rel="stylesheet" href="/sa/kroger-header.75a650a0c2.css">
.
.
.
  <div id="ZN_dnk7EnVUuZidS97"></div>
<noscript><img src="https://www.kroger.com/akam/11/pixel_29e0b938?a=dD0zZGYzZWUxMjAzZDM3ZmRlYjA3YjExYjRkM2Y2MDlmOWJlOGUxNDY1JmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" /></noscript><script type="text/javascript">var _cf = _cf || []; _cf.push(['_setFsp', true]);  _cf.push(['_setBm', true]);  _cf.push(['_setAu', '/resources/0f06f85473rn244317954ff2256514de']); </script><script type="text/javascript" src="/resources/0f06f85473rn244317954ff2256514de"></script>

<div id="kds-Portal-toast" class="kds-Portal pointer-events-none undefined"><div class="kds-ToastGroup"></div></div><iframe sandbox="allow-scripts allow-same-origin" title="Adobe ID Syncing iFrame" id="destination_publishing_iframe_kroger_0" name="destination_publishing_iframe_kroger_0_name" src="https://kroger.demdex.net/dest5.html?d_nsid=0#https://www.kroger.com" style="display: none; width: 0px; height: 0px;"></iframe></body></html>
  

Комментарии:

1. Когда я пытаюсь что-либо сделать. Если я введу свою регистрационную информацию и нажму войти (либо с помощью python, либо вручную), а также обновлю страницу. Даже иногда переключение между ними приводит к тому, что я получаю страницу. Хотя я не сразу перехожу на страницу отказа в доступе. Обычно это приводит меня к «Ой, нажмите здесь, чтобы обновить», и когда я обновляю его, он находится на странице «Доступ запрещен».

2. @Lzypenguin Вы упоминаете разные шаги в своих комментариях, и каждый аспект требует другого ответа с совершенно другим подходом. Где, как ваши испытания кода были driver.get(webpage) . Не стесняйтесь задавать новый вопрос с вашим новым требованием. ПОЭТОМУ участники будут рады вам помочь.

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