Keep auth_secure cookie from deviantart

Unlike this projects, all other DA scrapers I found[0] require that both
"auth" and "auth_secure" are set.
While the current approach, for some reason, seems to have worked fine in
the past, it has stopped functioning on some systems, sometimes
permanently (apparently sometimes only temporarily).
I don't have the means to find out the reason behind that, since all
configurations I've tried (mobile, VPN, and regular connection +
4 seperate accounts) resulted in me being effectively logged out and
unable to view mature works after deleting the "auth_secure" cookie.
The "if auth_cookie" part might not actually be necessary, its only
purpose is to prevent unintended breakage due to lack of information
on my part.

[0]: b662b46a44 (diff-aab4e263d591d1c7f23d015a2e540a32R161)
     cbaecf5507 (diff-9f9821e7d744874a2fe42e0a69e4b14aR33)
This commit is contained in:
lllusion3469
2017-08-30 20:47:59 +02:00
committed by GitHub
parent bc69badadd
commit 4c3733ce5a

View File

@@ -118,7 +118,7 @@ module Sources
def agent
@agent ||= begin
mech = Mechanize.new
auth, userinfo = session_cookies(mech)
auth, userinfo, auth_secure = session_cookies(mech)
if auth
# This cookie needs to be set to allow viewing of mature works
@@ -136,6 +136,13 @@ module Sources
cookie.domain = ".deviantart.com"
cookie.path = "/"
mech.cookie_jar.add(cookie)
if auth_secure
cookie = Mechanize::Cookie.new("auth_secure", auth_secure)
cookie.domain = ".deviantart.com"
cookie.path = "/"
mech.cookie_jar.add(cookie)
end
end
mech
@@ -166,9 +173,10 @@ module Sources
auth = mech.cookies.find { |cookie| cookie.name == "auth" }.try(:value)
userinfo = mech.cookies.find { |cookie| cookie.name == "userinfo" }.try(:value)
auth_secure = mech.cookies.find { |cookie| cookie.name == "auth_secure" }.try(:value)
mech.cookie_jar.clear
[auth, userinfo]
[auth, userinfo, auth_secure]
end
end
end