首页 > 解决方案 > 使用 selenium 浏览器自动化时如何避免访问被拒绝

问题描述

我将尝试用示例代码描述问题。这是 C# 中的代码,它打开 Chrome 浏览器的实例并导航到 nseindia.com:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

namespace nseindia_selenium
{
    class Program
    {
        static void Main( string [ ] args )
        {
            ChromeOptions options = new ChromeOptions ();
            options.BinaryLocation = "C:\\Users\\Subhasis\\AppData\\Local\\Chromium\\Application\\chrome.exe";
            //options.AddAdditionalCapability ( "w3c" , true );
            options.AddArgument ( "no-sandbox" );
            options.AddArgument ( "start-maximized" );
            options.AddArgument ( "disable-gpu");
            options.AddArgument ( "user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36" );
            options.AddExcludedArgument ( "enable-automation" );
            options.AddAdditionalCapability ( "useAutomationExtension" , false );
            //options.AddAdditionalCapability ( "chrome.page.customHeaders.referrer" , "https://www.nseindia.com" );
            ChromeDriver chrome1 = new ChromeDriver (options);
            chrome1.Navigate ().GoToUrl ( "https://www.nseindia.com/" );
        }
    }
}

事情似乎进展到了这一步(并非真的,所有数据字段都显示为空)。但是在这个阶段,如果我手动控制浏览器窗口并尝试浏览到 nseindia.com 的任何其他部分,我会收到错误消息: 在此处输入图像描述

在这一点上,即使我尝试回到网站的主页,它也不会让我这样做。

过去对同一问题的回答建议手动设置引荐来源网址。但当我这样做时,

options.AddAdditionalCapability ( "chrome.page.customHeaders.referrer" , "https://www.nseindia.com" );

它给了我“无效参数”错误。此外,如果是推荐人的错,这并不能解释为什么手动单击链接不起作用。

过去的答案还建议使用

options.AddAdditionalCapability ( "useAutomationExtension" , false );

但这不再起作用了,因为我收到了这条消息:

[1601022727.512][WARNING]: Deprecated chrome option is ignored: useAutomationExtension
[1601022727.512][WARNING]: Deprecated chrome option is ignored: useAutomationExtension

在过去,这曾经是因为错误的 w3c 模式而发生的,但我也不能再切换 w3c 模式了。当我把

options.AddAdditionalCapability ( "w3c" , true );

我收到一条错误消息:

System.ArgumentException: 'There is already an option for the w3c capability. Please use the  instead.
Parameter name: capabilityName'

那我该怎么办?

标签: c#selenium

解决方案


推荐阅读