Я сделал скрипт для проверки всех ссылок на одной странице, но все ссылки всегда дают код ответа 403, он будет нормально открываться в браузере, но при проверке его путем получения кода ответа с использованием selenium java всегда дает 403 (Запрещено), я также приношу все куки, но это не работает, если у кого-то есть решение, дайте мне знать. Заранее спасибо. это мой код для хранения всех файлов cookie и внесения их во все проверки ответов на ссылки
private int getHttpResponseStatusCode(String webPageUrl) {
int ret = -1;
try {
if (webPageUrl != null && !"".equals(webPageUrl.trim())) {
URL urlObj = new URL(webPageUrl.trim());
HttpURLConnection httpConn = (HttpURLConnection) urlObj.openConnection();
Set <Cookie> cookies = driver.manage().getCookies();
String cookieString = "";
for (Cookie cookie: cookies) {
cookieString += cookie.getName() + " = " + cookie.getValue() + ";";
}
httpConn.addRequestProperty("Cookies", cookieString);
httpConn.setRequestMethod("HEAD");
httpConn.connect();
ret = httpConn.getResponseCode();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
System.out.println("Http Status Code : " + ret + " , Url : " + webPageUrl);
return ret;
}
};
вот как я получаю все ссылки со страницы
private List <String> parseOutAllUrlLinksInWebPage(String webPageUrl) {
List <String> retList = new ArrayList <String> ();
if (webPageUrl != null && !"".equals(webPageUrl.trim())) {
/* Get current page belongs domain. */
String urlDomain = this.getPageBelongDomain(webPageUrl);
/* First parse out all a tag href urls. */
By byUrlLink = By.tagName("a");
List <WebElement> aLinkList = driver.findElements(byUrlLink);
if (aLinkList != null) {
int aLinkSize = aLinkList.size();
for (int i = 0; i <aLinkSize; i++) {
WebElement aLink = aLinkList.get(i);
String href = aLink.getAttribute("href");
if (href != null && !"".equals(href.trim())) {
/* Only return same domain page url. */
if (href.toLowerCase().startsWith("http://" + urlDomain) || href.toLowerCase().startsWith("https://" + urlDomain)) {
retList.add(href);
}
}
}
}
/* Second parse out all img tag src urls. */
By byImg = By.tagName("img");
List <WebElement> imgList = driver.findElements(byImg);
if (imgList != null) {
int imgSize = imgList.size();
for (int i = 0; i <imgSize; i++) {
WebElement imgElement = imgList.get(i);
String src = imgElement.getAttribute("src");
if (src != null && !"".equals(src.trim())) {
/* Only return same domain page url. */
if (src.toLowerCase().startsWith("http://" + urlDomain) || src.toLowerCase().startsWith("https://" + urlDomain)) {
retList.add(src);
}
}
}
}
}
System.out.println("Parse out url completed successfully.");
return retList;
};
тот же результат с использованием HEAD или GET, это веб-сайт компании, сервер компании, без javascript, извините, это неправильный тег
Так что, возможно, все, кроме POST, запрещено
да, но всегда получал ответ 403, используя HEAD или GET
Так что попробуйте POST ....
тот же результат, 403
Прочтите это и убедитесь, что ваш URL-адрес действителен lifewire.com/403-forbidden-error-explained-2617989
ну, все ссылки генерируются автоматически, поэтому URL-адрес восприятия действителен, но когда я хочу получить код ответа с использованием селена, он даст код 403.
Найдите селен 403




Возможно, ваш сервер блокирует запросы HEAD - это ваш сервер? Также где находится JavaScript? Я удалил тег