more cookie expiring conditions
This commit is contained in:
parent
97554fcd2a
commit
4fcf61b921
|
@ -188,13 +188,19 @@ public class ChaturbateHttpClient extends HttpClient {
|
|||
try {
|
||||
cookieRefreshLock.writeLock().lock();
|
||||
|
||||
|
||||
// we need to prevent repeated challenge requests from multiple threads, so we check if the clearance cookie needs updating
|
||||
// maybe this can be done with some syncronization primitive, or maybe an expiresAt() check is enough
|
||||
var needRefresh = Optional
|
||||
var cookie = Optional
|
||||
.ofNullable(cookieJar.getCookies().get(req.url().topPrivateDomain()))
|
||||
.flatMap(x -> cookieJar.getCookieFromCollection(x, "cf_clearance"))
|
||||
.map(c -> Instant.ofEpochMilli(c.expiresAt()).isBefore(Instant.now())).orElse(true);
|
||||
if (needRefresh) {
|
||||
.flatMap(x -> cookieJar.getCookieFromCollection(x, "cf_clearance"));
|
||||
|
||||
var cookieExpired = cookie.map(c ->
|
||||
Instant.ofEpochMilli(c.expiresAt()).isBefore(Instant.now()) // by time
|
||||
|| req.headers("Set-Cookie").stream().anyMatch(headerCookie -> headerCookie.contains(c.value())) // we got 403 with current cookie present
|
||||
).orElse(true);
|
||||
|
||||
if (cookieExpired) {
|
||||
var apiResponse = flaresolverr.getCookies(req.url().toString()).get();
|
||||
if (apiResponse.getStatus().equals("ok")) {
|
||||
// update user agent. It should be the same for all sites, assuming we use the same api address every time
|
||||
|
|
Loading…
Reference in New Issue