C# 如何避免在使用selenium浏览器自动化时拒绝访问

C# 如何避免在使用selenium浏览器自动化时拒绝访问,c#,selenium,C#,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.

我将尝试用一个示例代码来描述这个问题。以下是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'

那么我该怎么办呢?

答案取决于是什么导致您无法访问?你尝试过的事情可能是导致这种情况的原因之一,但还有很多其他原因。不仅如此,此网页可能有积极的应对措施,以防止其受到攻击crawled@Liam该网站似乎使用Akamai机器人检测。有没有办法绕过它?很可能。人们不想被爬行。爬虫经常从网页上窃取计算能力和信息。我曾经在一些网页上工作过,我们试图阻止人们在我们的网站上爬行,因为爬行会花费我们的钱,而爬行的人正试图窃取我们的业务。如果你有正当的理由爬网这个网站,我建议你联系拥有它的人并请求许可。@Liam不幸的是,我无法做出或甚至建议做出这样高级别的决定。我的老板想让我写一些代码来爬网这个网站,如果我失败了,那对我的工作就不好了。答案取决于是什么导致你无法访问?你尝试过的事情可能是导致这种情况的原因之一,但还有很多其他原因。不仅如此,此网页可能有积极的应对措施,以防止其受到攻击crawled@Liam该网站似乎使用Akamai机器人检测。有没有办法绕过它?很可能。人们不想被爬行。爬虫经常从网页上窃取计算能力和信息。我曾经在一些网页上工作过,我们试图阻止人们在我们的网站上爬行,因为爬行会花费我们的钱,而爬行的人正试图窃取我们的业务。如果你有正当的理由爬网这个网站,我建议你联系拥有它的人并请求许可。@Liam不幸的是,我无法做出或甚至建议做出这样高级别的决定。我的老板想让我写一些代码来爬网这个网站,如果我失败了,那对我的工作就不好了。