【问题标题】:Website denies get request using Selenium网站拒绝使用 Selenium 获取请求
【发布时间】:2020-11-08 17:35:00
【问题描述】:

我正在尝试使用 selenium 来自动登录到网站 https://afghanbids.com/,但是当我运行我的 python 程序时,浏览器会加载一个显示拒绝访问的页面。您可能会看到下面的屏幕截图。

我的代码:

driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get("https://afghanbids.com/")

这表明:

我怎样才能提出请求,这样目标网站才不会拒绝我的请求?

【问题讨论】:

    标签: python selenium google-chrome selenium-webdriver selenium-chromedriver


    【解决方案1】:

    查看网页,当您使用 chrome 驱动程序时,它确实会重定向到拒绝访问页面。

    我感觉可能是一些 javascript 强制重定向。

    根据这篇帖子:How to disable java script in Chrome Driver Selenium Python,您可以在 chrome 驱动程序中禁用 javascript。

    使用答案中的代码:

    chrome_options = Options()
    chrome_options.add_experimental_option("prefs", {'profile.managed_default_content_settings.javascript': 2})
    chrome = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
    

    我能够阻止重定向到拒绝访问页面。不是理想的解决方案,但似乎是一种有用的解决方法

    【讨论】:

      【解决方案2】:

      我使用了您的代码,添加了一些调整,然后遇到了 access_denied 页面。以下是观察结果:

      代码块:

      from selenium import webdriver
      
      options = webdriver.ChromeOptions() 
      options.add_argument("start-maximized")
      options.add_experimental_option("excludeSwitches", ["enable-automation"])
      options.add_experimental_option('useAutomationExtension', False)
      driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
      driver.get("https://afghanbids.com/")
      print(driver.page_source)
      

      浏览器快照:

      控制台输出:

      <html lang="en"><head>
          <meta charset="utf-8">
          <meta http-equiv="X-UA-Compatible" content="IE=edge">
          <meta name="viewport" content="width=device-width, initial-scale=1">
      
          <title>AfghanBids</title>
      
          <!--favicon-->
          <!-- <link rel="apple-touch-icon" href="/theme/images/apple-touch-icon.png"> -->
          <link rel="shortcut icon" href="https://afghanbids.com/assets/backend/images/favicon_1.ico" type="image/x-icon">
      
          <script type="text/javascript">
            var base_url = "https://afghanbids.com/";
            var number = 1;
            var total_size = 0;
            var allow = false;
          </script>
      
          <!-- bootstrap -->
          <link href="https://afghanbids.com/assets/plugins/bootstrap-3.3.2/css/bootstrap.min.css" rel="stylesheet">
      
          <!-- Icons -->
          <link href="https://afghanbids.com/assets/plugins/font-awesome-4.2.0/css/font-awesome.min.css" rel="stylesheet">
      
          <!-- Themes styles-->
          <link href="https://afghanbids.com/assets/theme/css/theme.css" rel="stylesheet">
          <!-- Your custom css -->
          <link href="https://afghanbids.com/assets/theme/css/theme-custom.css" rel="stylesheet">
          <link href="https://afghanbids.com/assets/custom/custom.css" rel="stylesheet">
      
      
          <script type="text/javascript" src="https://afghanbids.com/assets/backend/js/jquery.min.js"></script>
          <!-- TO SET TIMEZONE OF VISITOR -->
          <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"></script>
          <script type="text/javascript">
          $(document).ready(function(){
              var tz = jstz.determine(); // Determines the time zone of the browser client
              var timezone = tz.name(); //'Asia/Kolhata' for Indian Time.
              url = base_url+"admin/user/set_timezone";
              $.post(url, {timezone: timezone}, function(data){
              // alert(data);
              });
          });
          </script>
      
          <!-- FOR GOOGLE RECAPTCHA -->
      
          <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
          <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
          <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
            <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
          <![endif]-->
      
            </head>
        <body>
           <div class="loading-page overlay" id="myNav">
            <!-- <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> -->
          <div class="counter">
            <p>File Uploading</p>
            <p style="font-size:12px">Please wait ...</p>
            <h1>0%
              <!--
              h1.abs loading
              h1.abs.color loading
              -->
            </h1>
            <hr>
          </div>
            </div>
      
          <!-- wrapper page -->
          <div class="wrapper">
            <!-- main-header -->
            <header class="main-header">
      
      
          <!-- main navbar -->
          <nav class="navbar navbar-default main-navbar hidden-sm hidden-xs">
            <div class="container">
              <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      
                <ul class="nav navbar-nav">
              <li class=""><a class="my-nav-a" href="https://afghanbids.com/home"><strong>HOME</strong></a></li>
              <li class=""><a class="my-nav-a" href="https://afghanbids.com/buyer_front"><strong>BUYERS</strong></a></li>
              <li class=""><a class="my-nav-a" href="https://afghanbids.com/seller_front"><strong>SELLERS</strong></a></li>
              <li class=""><a class="my-nav-a" href="https://afghanbids.com/home/contact"><strong>CONTACT US</strong></a></li>
              <li class=""><a class="my-nav-a" href="https://afghanbids.com/home/about"><strong>ABOUT US</strong></a></li>
                      <li class=""><a href="https://afghanbids.com/admin/user/register"><strong>REGISTER</strong></a></li>              </ul>
                <form action="https://afghanbids.com/admin/user/login" id="quick_login" hidden="" method="post"></form>
                <ul class="nav navbar-nav navbar-right">
                        <li class="link-btn"><input type="text" maxlength="64" class="form-control" required="" form="quick_login" name="email_username" placeholder="Email / Username"></li>
              <li class="link-btn"><input type="password" maxlength="32" class="form-control" required="" form="quick_login" name="password" pattern=".{6,}" placeholder="Password"></li>
              <li class="link-btn"><button class="btn btn-theme btn-pill btn-xs btn-line" form="quick_login" type="submit">Login</button></li>
      
                       </ul>
              </div>
            </div>
          </nav><!-- end main navbar -->
      
          <!-- mobile navbar -->
          <div class="container">
            <nav class="mobile-nav hidden-md hidden-lg">
              <a href="#" class="btn-nav-toogle first">
                <span class="bars"></span>
                Menu
              </a>
              <div class="mobile-nav-block">
                <h4>Navigation</h4>
                <a href="#" class="btn-nav-toogle">
              <span class="barsclose"></span>
              Close
                </a>
      
                <ul class="nav navbar-nav">
              <li class=""><a href="https://afghanbids.com/home"><strong>Home</strong></a></li>
              <li class=""><a href="https://afghanbids.com/buyer_front"><strong>BUYERS</strong></a></li>
              <li class=""><a href="https://afghanbids.com/seller_front"><strong>SELLERS</strong></a></li>
      <li class=""><a href="https://afghanbids.com/home/contact"><strong>CONTACT US</strong></a></li>
              <li class=""><a href="https://afghanbids.com/home/about"><strong>ABOUT US</strong></a></li>
      
                       <li class=""><a href="https://afghanbids.com/admin/user/register"><strong>Registration</strong></a></li>
              <li><a href="https://afghanbids.com/admin/user/login_page/1"><strong>Login</strong></a></li>
                         </ul>
              </div>
            </nav>
          </div><!-- mobile navbar -->
      
          <!-- <div class="container"> -->
            <!-- <img class="banner-image" src="header-banner.jpg" width="100%"> -->
          <!-- </div> -->
      
          <!-- form search area-->
              <div class="container">
            <div class="row" style="margin-top: -30px">
              <div class="col-md-5">
                <div class="col-md-8">
              <div class="logo text-center inline">
                  <!-- <img src="assets/theme/images/logo.png" alt="">  -->
                  <h3 class="banner-msg"><strong></strong></h3>
                  <!-- <div class="label-add">Resume</div> -->
                <!-- </a> -->
              </div>
                </div>
                <div class="col-md-4">
              <div class="logo text-center inline">
                        </div>
                </div>
      
              </div>
              <div class="col-md-7">
      
                <!-- form search  -->
                <form method="get" action="https://afghanbids.com/home/search" class="form-search-list">
              <div class="row">
      
                <div class="col-sm-10 col-xs-12">
                  <div class="form-group" style="margin-top: 3px;">
                    <label class="color-white">Search For Opportunities</label>
                    <input class="form-control" maxlength="128" required="" name="keywords" placeholder="Type your keywords here...">
                  </div>
                </div>
                <div class="col-sm-2 col-xs-12">
                  <div class="form-group">
                    <label class="hidden-xs">&nbsp;</label>
                    <button class="btn btn-block btn-theme  btn-success">Search</button>
                  </div>
                </div>
              </div>
              <!--<p class="text-right"><a  href="#modal-advanced" data-toggle="modal" class="link-white">Advanced Search</a></p>-->
                </form><!-- end form search  -->
      
      
              </div>
            </div>
          </div><!-- end form search area-->
                </header><!-- end main-header -->      <!-- body-content -->
            <div class="body-content clearfix">
      
          <div class="block-section bg-color2">
            <div class="container">
              <!-- text centered -->
              <div class="text-center">
                <h1>Sorry, page not found!</h1>
      
              <!--   <ul class="list-inline">
              <li> <a href="#">Home</a></li>
              <li><a href="#">Find a Job</a></li>
              <li> <a href="#">Blog</a></li>
              <li> <a href="#">Contact Us</a></li>
                </ul> -->
              </div><!-- end text centered -->
      
              <!-- big text error -->
              <div class="big-error">404</div><!-- end big text error -->
            </div>
          </div>
      
            </div><!--end body-content -->
      
             <!-- main-footer -->
            <footer class="main-footer">
      
      
          <div class="container">
            <div class="row">
              <div class="col-sm-6">
                <ul class="list-inline link-footer text-center-xs">
              <li><a href="https://afghanbids.com/">Home</a></li>
              <li><a href="https://afghanbids.com/home/about">About Us</a></li>
              <li><a href="https://afghanbids.com/home/contact">Contact Us</a></li>
                </ul>
              </div>
              <div class="col-sm-6 ">
                <span class="pull-right">Powered By: <a target="_blank" href="http://www.codezone.af">CodeZone</a></span>
              </div>
      
            </div>
          </div>
            </footer><!-- end main-footer -->
      
          </div><!-- end wrapper page -->
      
      
      
      
          <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
          <!-- <script src="/plugins/jquery.js"></script> -->
      
          <!-- jQuery Bootstrap -->
          <script src="https://afghanbids.com/assets/plugins/bootstrap-3.3.2/js/bootstrap.min.js"></script>
          <script src="https://afghanbids.com/assets/plugins/jquery.easing-1.3.pack.js"></script>
          <!-- Lightbox -->
          <!-- <script src="https://afghanbids.com/assets/plugins/magnific-popup/jquery.magnific-popup.min.js"></script> -->
      
          <!-- Theme JS -->
          <script src="https://afghanbids.com/assets/theme/js/theme.js"></script>
      
      
      </body></html>
      

      分析

      最初我怀疑Selenium驱动ChromeDriver发起浏览上下文getting detected

      但令人惊讶的是,即使是基于 的用于访问 的快捷方式在手动 启动的会话中仍通过以下任一方式被禁用:

      • F12
      • ctrl+shift+I
      • ctrl+shift+J
      • ctrl+shift+C

      此外,如果您通过More tools 强制打开google-chrome-devtools -> Developer tools,则手动 启动的会话开始显示抱歉,找不到页面!。因此,即使分析 HTML 也会有点困难。

      最后,我必须承认,开发人员在限制自动化机器人方面做得非常出色。

      【讨论】:

      • 感谢 DebanjanB 提供了非常好的答案。感谢您的努力。我还使用您的代码获得了页面源代码。事实上,我想通过提供用户名和密码通过 selenium 登录到这个网站。但是在获得源代码后,我找不到用于登录授权的两个输入和按钮。你能帮我解决这个问题吗?
      • @TalibDaryabi 这不应该是一个单独的问题吗?
      • @TalibDaryabi 很高兴能够帮助您!如果我的answer满足了您的question,请点击我的answer旁边的空心复选标记acceptanswer i> 位于 votedown 箭头下方,因此复选标记变为 绿色
      猜你喜欢
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多