java - 您可以使用 cookies 绕过 Selenium WebDriver 中的 403 代码吗?

标签 java selenium selenium-webdriver

我正在使用 WebDriver 通过 img Html 元素的 src 属性访问 url 字符串。但是,当我尝试打开该 URL 的新窗口时,我收到 403 Unauthorized 访问权限,但我不知道如何克服它。我在 stackoverflow 上读过很多帖子,但我看到的最有希望的解决方案是在 URLConnection 中指定 User agent 首选项,但没有效果。到目前为止,这是我的代码:

WebDriver driver = new ChromeDriver();            
        String urlSelector = "body > div.overlay > div#cards"+cardID + " > div.one.card > img.core.load.bg.on";
        WebElement urlElem = driver.findElement(By.cssSelector(urlSelector));
        String url = urlElem.getAttribute("src");
        driver.get(url);

编辑: 我在另一篇文章中读到,我可能需要将某些 cookie 传递给 URLConnection 以避免 403 响应代码并验证自己的身份。因此,我检查了访问网站时出现的 cookie(使用 WebDriver),结果如下所示:

cookies_one

cookies_two

但是,如果我在普通浏览器(不使用 WebDriver)上打开同一个网站,我会得到一些额外 imgur cookie,它们是列表如下:

cookies_three cookies_four

据我所知,当我点击链接时,Imgur 是该网站用来显示图像的。我还决定在普通浏览器中单击图像的链接后检查 imgur 上的 cookie,我得到了 2 个似乎与数据库相关的 cookie(?):

cookies_five

据您所知,这些 Cookie 中的任何一个都用于对我进行身份验证吗?有没有办法在我的 URLConnection 中使用这些 Cookie 来避免 403 响应代码?

P.S:有问题的网站是这个website

最佳答案

尝试一下(尚未测试):

 WebDriver driver = new ChromeDriver();            
 String urlSelector = "body > div.overlay > div#cards"+cardID + " > div.one.card > img.core.load.bg.on";
  WebElement urlElem = driver.findElement(By.cssSelector(urlSelector));
  String url = urlElem.getAttribute("src");
  ((JavascriptExecutor)driver).executeScript("img = document.createElement('img'); 
      img.src = '"+ url + "';  img.id='forscreenshot'; document.body.appendChild(img);");
         WebDriverWait wait = new WebDriverWait(driver,5);
         WebElement element  = wait.until(ExpectedConditions.presenceOfElementLocated(By.id('forscreenshot')));
         File screenshot = element.getScreenshotAs(OutputType.FILE);

关于java - 您可以使用 cookies 绕过 Selenium WebDriver 中的 403 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58456364/

相关文章:

java - 如何将这个复合值函数转换为 for 循环?

java - 使用 JAXB 注释忽略链接对象,但不忽略链接对象 ID

java - 无法启动 chrome,即在使用 Selenium 网格的节点上

java - Spring Boot - “Error creating bean with name 'entityManagerFactory'” - 启动

未定义 Python 全局变量 - 在类内部声明

java - 如何使用 Selenium (Java) 滚动溢出 div?

php - Selenium 不显示失败的数字行

java - 在 Selenium Grid 中注册 PhantomJS 节点时出错

java - 出现错误 "class file for org.openqa.selenium.remote.RemoteWebDriver not found"

java - 字符串中的重复字符