Обработка кода ответа: 403 для URL с clojure enlive

Я пытаюсь очистить содержимое веб-страницы с помощью функции html-ресурса enlive, но получаю ответ 403, потому что я не из браузера. Думаю, это можно переопределить в Java (найден ответ здесь), но я хотел бы увидеть способ clojure чтобы справиться с этой проблемой. Возможно, этого можно добиться, предоставив параметры функции html-ресурса, но я не встречал примера того, как и что нужно передавать в качестве параметра. Любое предложение будет принята с благодарностью.

Спасибо.


person Мitke    schedule 08.09.2013    source источник
comment
Правильно вам нужно что-то вроде clj-http или http-kit, которое позволяет вам контролировать соединение, где вы можете указать некоторые настройки, получить ответ и передать (html-ресурс)   -  person Chiron    schedule 08.09.2013
comment
html-resource — это мультиметод, в котором вы можете передать ему объект URL. github.com/cgrand/enlive/blob/ master/src/net/cgrand/ Это хороший момент, когда вы можете установить «user-agent» для вашего объекта подключения URL.   -  person Chiron    schedule 08.09.2013


Ответы (1)


Enlive html-resource не предоставляет возможности переопределить свойства запроса по умолчанию. Вы можете, как и в другом ответе, который вы нашли, открыть соединение самостоятельно и передать полученное InputStream в html-resource.

Что-то вроде следующего справится с этим:

(with-open [inputstream (-> (java.net.URL. "http://www.example.com/")
                            .openConnection
                            (doto (.setRequestProperty "User-Agent"
                                                       "Mozilla/5.0 ..."))
                            .getContent)]
  (html-resource inputstream))

Хотя, возможно, это выглядело бы лучше, если бы оно было разделено на отдельные функции.

person Jared314    schedule 09.09.2013
comment
Спасибо за ваш ответ, я попробую. - person Мitke; 09.09.2013