为什么有些网站不能使用Selenium实现自动化

为什么有些网站不能使用Selenium实现自动化,selenium,google-chrome,selenium-webdriver,webdriver,selenium-chromedriver,Selenium,Google Chrome,Selenium Webdriver,Webdriver,Selenium Chromedriver,我试着自动化网页,但不明白为什么网站不能导航到下一页 我的剧本是 打开页面->以2587051083的身份输入MTCN->单击“继续”按钮 但单击后,什么也不显示。虽然手动复制相同的步骤效果很好。这类网站是否缺少任何浏览器设置?我不知所措 public static void main(String ar[]) { System.setProperty("webdriver.chrome.driver","D:\\Study\\selenium-java-2.48.2\\sele

我试着自动化网页,但不明白为什么网站不能导航到下一页

我的剧本是 打开页面->以2587051083的身份输入MTCN->单击“继续”按钮 但单击后,什么也不显示。虽然手动复制相同的步骤效果很好。这类网站是否缺少任何浏览器设置?我不知所措

public static void main(String ar[]) {
        System.setProperty("webdriver.chrome.driver","D:\\Study\\selenium-java-2.48.2\\selenium-2.48.2\\chromedriver.exe");
        driver=new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
        driver.get("https://www.westernunion.com/global-service/track-transfer");
        driver.findElement(By.xpath("//input[@id='trackingNumber']")).sendKeys("2587051083");
        driver.findElement(By.xpath("//button[@id='button-track-transfer']")).click();
        }

关于
https://www.westernunion.com/global-service/track-transfer
web页面要在跟踪字段中发送字符序列,我对您自己的代码进行了一些小的修改,使WebDriverwait能够单击所需的元素,然后调用
click()
在文本为的元素上继续执行以下操作:

  • 代码块:

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class westernunion {
    
        public static void main(String[] args) {
    
            System.setProperty("webdriver.chrome.driver","C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            ChromeOptions opt = new ChromeOptions();
            opt.addArguments("start-maximized");
            opt.addArguments("disable-infobars");
            opt.addArguments("--disable-extensions");
            WebDriver driver=new ChromeDriver(opt);
            driver.get("https://www.westernunion.com/global-service/track-transfer");
            new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.new-field.form-control.tt-mtcn.ng-pristine.ng-valid-mask"))).sendKeys("2587051083");
            driver.findElement(By.cssSelector("button.btn.btn-primary.btn-lg.btn-block.background-color-teal.remove-margin#button-track-transfer")).click();
        }
    }
    
看起来,
点击()
确实发生了,而且微调器会显示一段时间,但是搜索被中断,在检查网页时,您会发现一些
标记和
标记指的是具有关键字dist的css。例如:

这清楚地表明,网站受到机器人管理服务提供商的保护,ChromeDriver的导航被检测到,随后被阻止


蒸馏 根据该条:

Distil通过观察网站行为和识别刮刀特有的模式,保护网站免受自动内容刮刀的攻击。当Distil在一个站点上识别出恶意bot时,它会创建一个黑名单上的行为配置文件,并部署到其所有客户。类似于机器人防火墙,Distil检测模式并做出反应

此外

“Selenium的一种模式是自动窃取网络内容”
,Distil首席执行官Rami Essaid上周在一次采访中说<代码>“尽管他们可以创建新的机器人,但我们找到了一种方法来识别他们正在使用的工具Selenium,因此无论他们在该机器人上迭代多少次,我们都会阻止Selenium。我们现在使用Python和许多不同的技术来实现这一点。一旦我们看到一种类型的机器人出现了一种模式,我们就会对他们使用的技术进行逆向工程,并将其识别为恶意的。


参考文献 您可以在以下内容中找到一些详细的讨论:


我已经编辑了我的问题。请让我知道您的想法。也请删除您的否决票。有趣的是,由于某些原因,它无法创建会话来获取
sessionId
尝试使用Firefox谢谢您的帮助,我也可以通过脚本输入文本并单击按钮,但问题是在单击“继续”按钮之后出现的。您是否可以e是否导航到下一页?我正在寻找下一页…任何方式都非常感谢您的努力和时间。祝您度过愉快的一天。@Nakul查看我的答案更新并让我知道状态。我已经浏览了这些链接,似乎我们无法自动处理这些受保护的网站。任何方式都非常感谢您提供的详细说明/链接。