Jsoup error 403 Forbidden exception fix example shows how to fix error 403 – Forbidden exception while using Jsoup in Java. Jsoup throws “org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403” exception.
How to solve error 403 – forbidden exception while using the Jsoup?
When trying to parse a website, I encountered the “org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403” exception. Here is the code which I used to connect to the website. I havev changed the website name.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package com.javacodeexamples.libraries.jsoup; import java.io.IOException; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class Jsoup403ForbiddenExample { public static void main(String[] args) { try{ //connect to the website Connection connection = Jsoup.connect(«http://www.example.com»); //get the HTML document Document doc = connection.get(); //parse text from HTML String strHTML = doc.text(); }catch(IOException ioe){ ioe.printStackTrace(); } } } |
Output
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://www.example.com at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:537) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:194) at com.javacodeexamples.libraries.jsoup.Jsoup403ForbiddenExample.main(Jsoup403ForbiddenExample.java:19) |
The HTTP status (response code) returned was 403.
What is HTTP 403 status code?
From Wikipedia,
A web server may return a 403 Forbidden HTTP status code in response to a request from a client for a web page or resource to indicate that the server can be reached and understood the request, but refuses to take any further action.
How to resolve the error 403 while using Jsoup?
Many of the websites filter web requests against the list of known user agents and deny access to unknown or bot user agents. Jsoup uses the Java version as a user agent string while making the request. This falls into the later category of bots and that could be the reason to get the 403 error – access is forbidden.
A simple solution to this problem is to specify the user agent string while connecting to the website using Jsoup as given below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
try{ //connect to the website Connection connection = Jsoup.connect(«http://whatsmyuseragent.com»); //specify user agent connection.userAgent(«Mozilla/5.0»); //get the HTML document Document doc = connection.get(); //parse text from HTML String strHTML = doc.text(); }catch(IOException ioe){ ioe.printStackTrace(); } |
Are you still getting Jsoup 403 errors? Other possible causes of getting 403 error – access is forbidden are given below.
1) Specify the HTTP referrer header while making a request using Jsoup.
2) If you are crawling the web too fast, the website’s firewall may block your IP. Wait for a few milliseconds before making the next request using the Thread.sleep
method.
If you are already using the user agent value, try changing the user agent value that reflects the newer version of the browser. Many times this solves the error.
This example is a part of the Jsoup tutorial with examples.
Please let me know your views in the comments section below.
About the author
- Author
- Recent Posts
Rahim
I have a master’s degree in computer science and over 18 years of experience designing and developing Java applications. I have worked with many fortune 500 companies as an eCommerce Architect. Follow me on LinkedIn and Facebook.
We are on YouTube!
Доброго времени суток, начал не так давно изучать джаву, решил написать простенький парсер для одной анонимной имиджборды, используя jsoup — 1.8.3, все шло неплохо, было реализовано выгребание jpg/png/gif с определенного треда. (В будущем хотел дописать поиск «Thread name» и сохранение с него картинок и/или .webm). Но тут внезапно прилетело
Кликните здесь для просмотра всего текста
Java | ||
|
Копаюсь уже какое то время, везде пишут проход этого эксепшена с помощью userAgent, но чет у меня не выходит. Буду очень благодарен если кто даст дельный совет относительно данной проблемы, ну или хотя бы подскажет в какой стороне копать. Насчет использование специальных апи для данной борды думал, хочу разобраться с данным вариантом реализации.
Сам код
Кликните здесь для просмотра всего текста
Java | ||
|
Использовал:
— jsoup-1.8.3.jar
— JDK 1.8
Дополнительная ссылка на код: http://ideone.com/TVfmmv
Есть мнение что работает какая-то dDoS защита( как в таком случае обходить ) \ мне известен рабочий многопользовательский скрипт от стороннего разработчика В в котором реализовано что-то типа грабера картинок, значит способ есть. Могу прикрепить ссылку на скрипт + гитхаб.
Могу внести уточнение относительно самого сайта. Первый раз на вашем форуме сильно не ругайтесь если напартачил с оформлением. Наперед говорю спасибо.
Добавлено через 39 минут
Сейчас посмотрел, на тот же код ругается по другому
Кликните здесь для просмотра всего текста
Java | ||
|
Теперь, Status=503. И если в Document doc = Jsoup дописать .ignoreHttpErrors(true), оно скомпилиться без ошибок, но страницу парсирует не полностью. И соответственно скрипт не будет работать так как оно не находит ссылок. Ума не приложу что это может быть.
Добавлено через 1 час 45 минут
Я тут еще покопался и люди говорят что это cloudflare, и что у меня ничего не выйдет.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Я пытаюсь получить результаты Google, используя следующий код:
Document doc = con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();
Но я получаю это исключение:
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403,URL=http://www.google.com/search?q=lakshman
Ошибка 403 означает, что сервер запрещает доступ, но я могу загрузить этот URL-адрес в веб-браузере. Почему Jsoup получает ошибку 403?
22 янв. 2013, в 22:12
Поделиться
Источник
6 ответов
Вам просто нужно добавить свойство UserAgent в HTTP-заголовок следующим образом:
Jsoup.connect(itemUrl)
.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
.get()
Liang
18 март 2014, в 02:57
Поделиться
Google не разрешает использование роботов, вы не можете использовать jsoup для подключения Google.
Вы можете использовать Google Web Search API (Устаревший), но количество запросов, которое вы можете сделать в день, будет ограничено.
Rowandish
16 дек. 2013, в 23:13
Поделиться
Собственно, вы можете избежать ошибки 403, просто добавив пользовательский агент
doc = Jsoup.connect(url).timeout(timeout)
.userAgent("Mozilla")
Но это против политики Google, я думаю.
EDIT: Google ловит роботов быстрее, чем вы думаете. Однако вы можете использовать это как временное решение.
Phani Rahul
10 фев. 2014, в 22:32
Поделиться
Заменить оператор
Document doc =con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();
с утверждением
Document doc=Jsoup.connect("http://www.google.com/search?q=lakshman").userAgent("Chrome").get();
Java Enthusiast
29 апр. 2014, в 20:03
Поделиться
В некоторых случаях вам нужно установить реферер. Это помогло мне в моем случае.
Полный источник здесь
try{
String strText =
Jsoup
.connect("http://www.whatismyreferer.com")
.referrer("http://www.google.com")
.get()
.text();
System.out.println(strText);
}catch(IOException ioe){
System.out.println("Exception: " + ioe);
}
Oleg
29 янв. 2018, в 22:42
Поделиться
попробуйте следующее:
Document doc =con.connect("http://www.google.com/search?q=lakshman").ignoreHttpErrors(true).timeout(5000).get();
в случае, если userAgent не работает. Как будто это не для меня.
Skillson
23 авг. 2016, в 23:14
Поделиться
Ещё вопросы
- 0MySQL Stored Routine Error
- 1Преобразование списка <string> в IEnumerator <string>
- 1Сборка колоды карт в Java с использованием 2 разных ENUMS
- 0Html SignalR Переполнение чата в окне чата
- 0Как настроить Grafana на экземпляре EC2, используя аутентификацию IAM для экземпляра RDS mysql?
- 1Сокет-сервер без подключения
- 0C ++: полиморфизм
- 1Для разделяемых объектов Autofac требуются разные регистрации для каждого контроллера, но InstancePerApiControllerType не будет работать
- 1Существует ли встроенный метод InputType или другой способ заставить виджет Android EditText отказываться принимать запятые?
- 1Попытка разобрать XML с помощью SAX, но ни один из моих тестов JUnit не работает?
- 1Android: представление списка с миниатюрой
- 1TFS SDK 2013 Получить имена команд в заданном командном проекте
- 0Импорт Geo Point (Lat, Lng) из MySQL в Elasticsearch
- 0Скачать PDF с PHP, не работает в проводнике и сафари
- 0Проблема в сборке выпуска Visual Studio 2012
- 0Проблемы с центрированием меню
- 0Ошибка таблицы вставки конвейера данных AWS с S3 в MySQL
- 1Печать переменных в графическом интерфейсе tkinter
- 0MySQL вставка не вставляя предполагаемое значение
- 1Как сделать бесконечные (бесконечные) узлы в Piccolo2D?
- 1Ошибка с моим генератором паролей грубой силы (Java)
- 0Получение значения братьев и сестер с помощью JavaScript
- 0Как загрузить изображения тоже phpmyadmin ASP.Net
- 0Не можете добавить внешний ключ здесь?
- 0Изменение текста после фотографии с помощью jquery
- 1Есть ли способ узнать, когда данные вставляются и обновляются в базе данных Firebase?
- 0Angularjs выбирает «поддельную» модель обновления
- 0JavaScript innerHTML связывает браузер iOS
- 0jquery .html () VS innerHTML ()
- 1Удалите цвет фокуса по умолчанию из GridLayout и EditBox в Android
- 0ASP.NET Javascript фреймворки теперь
- 1Что эквивалентно конфигурации hdp: в аннотации Spring Boot?
- 0HTML отправка или выбор
- 1JavaScript во внешнем файле выполняется до события onload тега script
- 0Защитить электронную таблицу с помощью PHP API Google Doc
- 1Нерыночная публикация контента
- 0Zend-DB не выполняет замены связывания pdo
- 0Получение контейнера в качестве аргумента шаблона
- 1jsPlumb — отрисовка нескольких соединений с использованием одной конечной точки для источника и цели
- 1Как определить, что MMS полностью загружено в Android?
- 0AngularJS Количество Да / Нет Значения
- 1ImageView в приложении Android, вызывающем сбой
- 0Отображение массива ошибок структуры / класса C ++
- 0загрузка веб-страницы до загрузки веб-страницы
- 1Выбор расширения файла с JFileChooser
- 0Добавить флаг заголовка в YiiMailer
- 1EF6 Дочерние объекты не обновляются в отношениях «многие ко многим»
- 0Создание текстового поля и кнопки с помощью append в jquery (я получаю повторяющийся результат)
- 0Как сделать строку, указывающую на переменную в Less?
- 0Несколько частичных просмотров на AngularJS
Я пытаюсь получить результаты Google, используя следующий код:
Document doc = con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();
Но у меня такое исключение:
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403,URL=http://www.google.com/search?q=lakshman
Ошибка 403 означает, что сервер запрещает доступ, но я могу без проблем загрузить этот URL-адрес в веб-браузере. Почему Jsoup получает ошибку 403?
6 ответы
Вам просто нужно добавить свойство UserAgent в заголовок HTTP следующим образом:
Jsoup.connect(itemUrl)
.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
.get()
ответ дан 18 мар ’14, в 02:03
Google не разрешает роботов, вы не можете использовать jsoup для подключения к Google. Вы можете использовать API веб-поиска Google (устарело) но количество запросов, которые вы можете сделать в день, будет ограничено.
ответ дан 16 дек ’13, 22:12
На самом деле, вы можете избежать ошибки 403, просто добавив пользовательский агент
doc = Jsoup.connect(url).timeout(timeout)
.userAgent("Mozilla")
Но я думаю, что это противоречит политике Google.
РЕДАКТИРОВАТЬ: Google ловит роботов быстрее, чем вы думаете. Однако вы можете использовать это как временное решение.
Создан 03 июн.
попробуй это:
Document doc =con.connect("http://www.google.com/search?q=lakshman").ignoreHttpErrors(true).timeout(5000).get();
на случай, если userAgent не сработал, как и у меня.
ответ дан 24 авг.
В некоторых случаях вам нужно установить реферер. В моем случае помогло.
Полный источник здесь
try{
String strText =
Jsoup
.connect("http://www.whatismyreferer.com")
.referrer("http://www.google.com")
.get()
.text();
System.out.println(strText);
}catch(IOException ioe){
System.out.println("Exception: " + ioe);
}
Создан 29 янв.
Заменить заявление
Document doc =con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();
с заявлением
Document doc=Jsoup.connect("http://www.google.com/search?q=lakshman").userAgent("Chrome").get();
ответ дан 29 апр.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
java
jsoup
http-status-code-403
or задайте свой вопрос.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.