Я хочу использовать Selenium для входа на сайт, а затем экспортировать файл cookie в httpclient.
(defn convert-selemium-cookie-to-httpclient-cookie [x]
(let [sf (SimpleDateFormat. "yyyy-MM-dd")
fake-date (.parse sf "2018-08-06")]
(doto
(BasicClientCookie. (:name x) (:value x))
(.setDomain (:domain x))
(.setPath (:path x))
(.setExpiryDate (if (:expiry x) (:expiry x) fake-date))
(.setSecure (:secure? x)))))
(defn add-selenium-cookies-to-httpclient-cookie-store [x]
(let [cs (clj-http.cookies/cookie-store)
http-cookies (map convert-selemium-cookie-to-httpclient-cookie x)]
(mapv (fn[x] (.addCookie cs x)) http-cookies)
cs))
(def driver (new-driver {:browser :firefox}))
(def a (login driver ...)) ;; login
(def c (cookies driver)) ;; get the cookies
(def cs (add-selenium-cookies-to-httpclient-cookie-store c))
(println (client/get "some web site"
{:cookie-store cs
:client-params {"http.useragent"
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20"}}))
Несмотря на то, что я успешно вхожу в систему в webdriver, и этот сайт сохраняет файлы cookie через сеансы, после копирования файлов cookie в хранилище файлов cookie, client/get
все еще возвращает страницу, не входящую в систему. Я пробовал аналогичную вещь на python и мог успешно перенести cookie от webdriver к запросам (http-клиент для python). Не уверен, где проблема для java/clojure.