我正在使用 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
),结果如下所示:
但是,如果我在普通浏览器(不使用 WebDriver
)上打开同一个网站,我会得到一些额外 imgur
cookie,它们是列表如下:
据您所知,这些 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/