forked from j62/ctbrec
more cookie expiring conditions
This commit is contained in:
parent
97554fcd2a
commit
4fcf61b921
|
@ -188,13 +188,19 @@ public class ChaturbateHttpClient extends HttpClient {
|
||||||
try {
|
try {
|
||||||
cookieRefreshLock.writeLock().lock();
|
cookieRefreshLock.writeLock().lock();
|
||||||
|
|
||||||
|
|
||||||
// we need to prevent repeated challenge requests from multiple threads, so we check if the clearance cookie needs updating
|
// 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
|
// 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()))
|
.ofNullable(cookieJar.getCookies().get(req.url().topPrivateDomain()))
|
||||||
.flatMap(x -> cookieJar.getCookieFromCollection(x, "cf_clearance"))
|
.flatMap(x -> cookieJar.getCookieFromCollection(x, "cf_clearance"));
|
||||||
.map(c -> Instant.ofEpochMilli(c.expiresAt()).isBefore(Instant.now())).orElse(true);
|
|
||||||
if (needRefresh) {
|
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();
|
var apiResponse = flaresolverr.getCookies(req.url().toString()).get();
|
||||||
if (apiResponse.getStatus().equals("ok")) {
|
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
|
// 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