1

我正在尝试在 java 上使用 Selenium chromedriver 抓取网站。我无法加载该页面,因为它将我检测为机器人。谷歌 Chrome 浏览器和 chromedriver 版本是正确的。我尝试了不同的方法,但我无法加载页面。这是我的代码:

//I have a button that initializes this class

public class Bet365 {
    
    public static WebDriver driver;
    public String url = "https://www.bet365.com";
    static {
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        
        ChromeOptions chromeOptions = new ChromeOptions();         
        
        chromeOptions.addArguments("--headless");  
        chromeOptions.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
        chromeOptions.addArguments("--disable-extensions");
        chromeOptions.addArguments("no-sandbox");
        chromeOptions.setExperimentalOption("useAutomationExtension", false);
        chromeOptions.addArguments("enable-automation");
        chromeOptions.addArguments("window-size=1280,800");
        chromeOptions.addArguments("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36");                     
            
        driver = new ChromeDriver(chromeOptions);            
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);                
    }        
    
    
    public void bet365() throws InterruptedException{        
        startBet365();
        driver.quit();            
    };

    
    public void startBet365(){            
        driver.get(url);                 
    }
}

任何帮助表示赞赏,非常感谢!

4

1 回答 1

0

我使用的是相同的,但它的加载。我有 python 代码,你可以用你的语言轻松地做到这一点。你可以试试她:-

    options.add_argument('--no-sandbox')
    options.add_argument("disable-infobars")
    # options.add_argument('--start-maximized')
    # options.add_argument('--start-fullscreen')
    options.add_argument('--single-process')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-blink-features=AutomationControlled')
    options.add_experimental_option('useAutomationExtension', False)
    options.add_experimental_option("excludeSwitches",["enable-automation"])
    options.add_argument("log-level=3")

然后你可以添加:-

options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.94 Chrome/37.0.2062.94 Safari/537.36')

在 useragent 添加 thease 后:

    driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => false})")

    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
    "source":
        "const newProto = navigator.__proto__;"
        "delete newProto.webdriver;"
        "navigator.__proto__ = newProto;"
})
driver.set_window_size(1400, 920)

您也可以尝试使用铬二进制文件。它也会对您有所帮助。

于 2021-10-10T09:37:56.887 回答