最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法

 更新時間:2021年01月14日 15:11:38   作者:UP技術控  
這篇文章主要介紹了c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

背景

大家在使用Selenium + Chromedriver爬取網(wǎng)站信息的時候,以為這樣就能做到不被網(wǎng)站的反爬蟲機制發(fā)現(xiàn)。但是實際上很多參數(shù)和實際瀏覽器還是不一樣的,只要網(wǎng)站進行判斷處理,就能輕輕松松識別你是否使用了Selenium + Chromedriver模擬瀏覽器。其中

window.navigator.webdriver

就是很重要的一個。

問題窺探

正常瀏覽器打開是這樣的

 模擬器打開是這樣的 

ChromeOptions options = null;
      IWebDriver driver = null;
      try
      {
        options = new ChromeOptions();
        options.AddArguments("--ignore-certificate-errors");
        options.AddArguments("--ignore-ssl-errors");

        // options.AddExcludedArgument("enable-automation");
        // options.AddAdditionalCapability("useAutomationExtension", false);

        var listCookie = CookieHelp.GetCookie();
        if (listCookie != null)
        {
          // options.AddArgument("headless");
        }

        // string ss = @"{ ""source"": ""Object.defineProperty(navigator, 'webdriver', { get: () => undefined})""}";
        //  options.AddUserProfilePreference("Page.addScriptToEvaluateOnNewDocument", new ssss() { source = " Object.defineProperty(navigator, 'webdriver', {  get: () => undefined }) " });

        ChromeDriverService service = ChromeDriverService.CreateDefaultService(System.Environment.CurrentDirectory);
        service.HideCommandPromptWindow = true;
        driver = new ChromeDriver(service, options, TimeSpan.FromSeconds(120));

        ////session.Page.AddScriptToEvaluateOnNewDocument(new OpenQA.Selenium.DevTools.Page.AddScriptToEvaluateOnNewDocumentCommandSettings()
        ////{
        ////  Source = @"Object.defineProperty(navigator, 'webdriver', { get: () => undefined })"
        ////}
        //// );

所以,如果網(wǎng)站通過js代碼獲取這個參數(shù),返回值為undefined說明是正常的瀏覽器,返回true說明用的是Selenium模擬瀏覽器。

解決辦法

那么對于這種情況,在爬蟲開發(fā)的過程中如何防止這個參數(shù)告訴網(wǎng)站你在模擬瀏覽器呢?執(zhí)行對應的js,改掉它的值。

 IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
 string returnjs = (string)js.ExecuteScript("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});");

運行效果

 完美,達到預期效果。

以上就是c# Selenium爬取數(shù)據(jù)時防止webdriver封爬蟲的方法的詳細內(nèi)容,更多關于c# 防止webdriver封爬蟲的資料請關注腳本之家其它相關文章!

相關文章

  • C#不提升自己程序的權限實現(xiàn)操作注冊表

    C#不提升自己程序的權限實現(xiàn)操作注冊表

    這篇文章主要介紹了C#不提升自己程序的權限實現(xiàn)操作注冊表的相關資料,需要的朋友可以參考下
    2022-12-12
  • C# yield關鍵字詳解

    C# yield關鍵字詳解

    這篇文章主要介紹了C# yield關鍵字詳解,本文講解了yield是一個語法糖、語法糖的實現(xiàn)(實現(xiàn)IEnumerable<T>接口的類)、yield使用中的特殊情況等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • C# lambda表達式原理定義及實例詳解

    C# lambda表達式原理定義及實例詳解

    這篇文章主要介紹了C# lambda表達式原理定義及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • C#實現(xiàn)創(chuàng)建標簽PDF文件的示例代碼

    C#實現(xiàn)創(chuàng)建標簽PDF文件的示例代碼

    標簽PDF文件包含描述文檔結構和各種文檔元素順序的元數(shù)據(jù),是一種包含后端提供的可訪問標記,管理閱讀順序和文檔內(nèi)容表示的邏輯結構的PDF文件。本文將用C#實現(xiàn)創(chuàng)建標簽PDF文件,需要的可以參考一下
    2022-08-08
  • C#使用System.Net郵件發(fā)送功能踩過的坑

    C#使用System.Net郵件發(fā)送功能踩過的坑

    這篇文章主要介紹了C#使用System.Net郵件發(fā)送功能踩過的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C#實現(xiàn)簡單的二叉查找樹

    C#實現(xiàn)簡單的二叉查找樹

    這篇文章介紹了C#實現(xiàn)二叉查找樹的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 調(diào)整C#中數(shù)組大小的方法

    調(diào)整C#中數(shù)組大小的方法

    數(shù)組存儲多個相同類型的一種非常常用的數(shù)據(jù)結構,它長度是固定,也就是數(shù)組一旦創(chuàng)建大小就固定了,C# 數(shù)組不支持動態(tài)長度,那在C#中是否有方法可以調(diào)整數(shù)組大小呢?本文將通過示例介紹一種調(diào)整一維數(shù)組大小的方法,需要的朋友可以參考下
    2024-06-06
  • 詳解如何利用C#實現(xiàn)漢字轉(zhuǎn)拼音功能

    詳解如何利用C#實現(xiàn)漢字轉(zhuǎn)拼音功能

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)漢字轉(zhuǎn)拼音的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • 淺析泛型類接口定義

    淺析泛型類接口定義

    在使用泛型定義類的過程中遇到了不少問題,特記錄如下,需要的朋友可以參考下
    2013-07-07
  • C#隨機生成Unicode類型字符串

    C#隨機生成Unicode類型字符串

    做測試時經(jīng)常需要生成一些隨機數(shù)據(jù),最常見的就是生成隨機字符串。而且往往要生成Unicode字符串,有時還要特別指定生成的字符的語言范圍。下面是我覺得比較靈活的方法:
    2013-04-04

最新評論

无极县| 奉节县| 双柏县| 阳东县| 游戏| 中西区| 大洼县| 天门市| 新野县| 仙游县| 平塘县| 天镇县| 合山市| 二连浩特市| 依安县| 都匀市| 新乐市| 吉安市| 黎平县| 宁夏| 遂溪县| 定兴县| 吉安市| 外汇| 乃东县| 陕西省| 襄城县| 博爱县| 安义县| 明光市| 常山县| 马鞍山市| 蒙城县| 扶沟县| 昭苏县| 彭山县| 大悟县| 凌海市| 剑河县| 静宁县| 永康市|