Jag har byggt något, ge mig feedback och använd det gärna själv

Relaterat till tråden Montrose by Carnegie, ny digital investeringsplattform, men tänkte att det här var ett sidospår.

Har hört att flera vill vara inloggade längre på Montrose. Alltid kul med en utmaning! Följande fungerar i webbläsaren.

Slängde ihop ett bokmärke till webbläsaren (egentligen “bookmarklet” på engelska). När man klickar på det så börjar det klicka på knappen för alla konton, följt av knappen för det första kontot. Det sker ett klick var 15:e minut. Man lämnar sedan den här fliken öppen och öppnar en ny för att faktiskt använda Montrose.

Den här rutan visas högst upp på hemsidan:
image

Har testat det i flera timmar i Firefox. Vet inte om ännu fler timmar kan göra att webbläsaren pausar fliken.

Det lättaste sättet att lägga till bokmärket är enligt följande (men det finns även andra sätt):

  1. Ctrl+Shift+B för att visa Bookmarks bar.
  2. Högerklicka på bookmarks bar och välj Add Bookmark… (Firefox) / Add Page… (Chrome).
  3. Fyll i namn och klistra in URL från informationen nedan. Hela koden klistras in. Den blir en rad i URL-rutan.
  4. Spara.
  5. Gå till https://app.montrose.io, logga in och klicka på bokmärket.

Namn: Håll Montrose inloggat
URL:

javascript:
/* Bookmarklet to keep login session active at montrose.io, by clicking on
 * account selection buttons.
 *
 * Version: 1.0.1
 * Author: thomasa88
 * License: MIT
 */

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

/*
* What does not keep the session active:
*  * The Auto Reload Tab extension
*  * Only clicking the profile button
* What keeps the session active:
*  * Clicking the buttons for selecting the active account every 15 minutes
*/

/* Might the browser also put the tab in the background? */

periodSecs = 10 * 60;

async function run() {
  let clickTimeSpan = document.getElementById('login-keeper-click-time');
  if (clickTimeSpan) {
    alert('Bokmärket har redan laddats. Ladda om sidan om du vill inaktivera eller ladda det igen.');
    return;
  }
  createBanner();

  let allAccountsBtn = document.querySelector('button[aria-label="Alla konton"]');
  let firstAccountBtn = document.querySelector('button[aria-label="Alla konton"] ~ button');
  let buttons = [allAccountsBtn, firstAccountBtn];

  /* Highlight which buttons we are using */
  buttons.forEach(b => b.style.background = 'red');

  clickTimeSpan = document.getElementById('login-keeper-click-time');

  while (true) {
    for (const btn of buttons) {
      console.log('Clicking');
      btn.click();
      let now = new Date();
      clickTimeSpan.innerText = `Senaste klicket: ${padTime(now.getHours())}:${padTime(now.getMinutes())}`;
      await sleep(periodSecs * 1000);
    }
  }
}

function padTime(num) {
  return num.toString().padStart(2, '0');
}

function createBanner() {
  let info = document.createElement('span');
  info.innerHTML = `
  <div style="position: fixed; top: 0; left: 0; background: red; color: white; padding: 5px; border-radius: 10px;">
  Håller inloggningen aktiv. Använd <a href="https://app.montrose.io" style="text-decoration: underline; color: white;" target="mr-tab">Montrose i en annan flik</a>. Stäng den här fliken eller ladda om sidan för att avbryta.
  <span id="login-keeper-click-time"></span>
  </div>
  `;
  document.body.appendChild(info);
}

run();
void(0);

edit:
Har hållit i 8h i Chrome nu. Hade fliken aktiv.
Höll 3h i Firefox vid senaste testet. Fliken var ej den aktiva fliken. Tror jag fick ihop fler timmar i mitt första test. Ev. hade jag tätare mellan klickningarna i det.

Det visar iaf att man verkar komma förbi Montrose spärr, men sen kanske fliken laddas ur/pausas av webbläsaren. Kanske går att komma runt om man gör ett tillägg/plugin istället.

edit2:
Det ser ut att vara cookies som har gått ut när jag kikar på nätverksanropen. Iaf den ena (_dd_s_v2) har created för ca en halvtimme sen i den session som fortfarande är aktiv. Det sammanfaller inte med tiden för ett klick.

Kikar jag på vilka cookies som webbläsaren skickar med i sina anrop vid 200 innan sessionen går ut och 401 efter den gått ut så är många borta:

Cookie Aktiv session Utgången session
__session :white_check_mark: :cross_mark:
_cfuvid :white_check_mark: :white_check_mark:
_dd_s :white_check_mark: :cross_mark:
_dd_s_v2 :white_check_mark: :cross_mark:
montrose-at :white_check_mark: :cross_mark:
montrose-csrf :white_check_mark: :cross_mark:

edit3:
Local storage har också en auth-tokens med accessTokenExpiresAt:null och lastRefreshAttempt:"Tiden för när sessionen pajade".

Hm, cookiesarna med tid (_dd*) ser ut allt alltid sättas med väldigt kort tid. Ser närmare bestämt ut att var 15 minuter!
Testar att skruva ner klicktiden till 10 minuter i bokmärket ovan. (v1.0.1)

edit4:
Senaste testet gav mig 6h i Chrome och 4h i Firefox :thinking:

edit5:
Listat ut vad som händer! För varje öppnad flik mot Montrose körs timern. Så öppnar man en flik till så kommer den döda sessionen efter 1h. Tänkte felanmäla och sen se om jag kan göra något smartare.

3 gillningar