Vai al contenuto

📥 Importa da WhatsApp Web

Per alcune tipologie di account, specie WhatsApp Business, l'identificazione tramite QR o Numero di Telefono potrebbe fallire. In queste casistiche utilizzare la funzione di importazione di una sessione esistente, seguendo le istruzioni seguenti.

Note

Le istruzioni variano leggermente sulla base che si utilizzi Chrome o Firefox, ma è importante che siano eseguite in una scheda Navigazione in incognito e non in una sessione già esistente.

Ottenimento del file di Sessione Web

  1. Aprire una scheda Navigazione in incognito su Chrome oppure Firefox e navigare all'indirizzo: https://web.whatsapp.com

  2. Effettuare il login con l'account WhatsApp che si vuole utilizzare per il BOT scansionando il QR Code visualizzato

  3. Una volta effettuato il login NON chiudere la finestra e procedere con i passaggi successivi

  4. Aprire la Gestione Segnalibri del browser: a. Su Chrome tre puntini in alto a destra → Segnalibri → Apri Gestore Segnalibri b. Su Firefox tre linee in alto a destra → Segnalibri → Gestisci Segnalibri (in basso)

  5. Una volta raggiunto il gestore segnalibri creare un nuovo segnalibro (Tasto Destro → Aggiungi Segnalibro)

  6. Come nome inserire "Sessione WhatsApp"

  7. Come URL inserire il testo seguente:

    Warning

    Usare il pulsante Copia in alto a destra del riquadro per copiare l'intero testo. Non selezionarlo a mano: è un'unica riga e va incollato completo, senza a capo, altrimenti non funziona.

javascript:(async()=>{const e=e=>{const t=e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e);let a=%22%22;for(const e of t)a+=String.fromCharCode(e);return btoa(a)},t=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0)),a=e=>{const t=(e=>localStorage.getItem(e))(e);if(null==t)return null;try{return JSON.parse(t)}catch(e){return t}},n=(e,t,a)=>new Promise((n,r)=>{const o=indexedDB.open(e);o.onerror=()=>r(o.error),o.onsuccess=()=>{const e=o.result,i=e.transaction(t,%22readonly%22).objectStore(t).get(a);i.onsuccess=()=>{e.close(),n(i.result)},i.onerror=()=>{e.close(),r(i.error)}}});try{const r=(await n(%22wawc_db_enc%22,%22keys%22,1)).key,o=t(a(%22WAWebEncKeySalt%22)),i=(a(%22WANoiseInfoIv%22)||[]).map(t),s=a(%22WANoiseInfo%22),c=t(s.privKey),l=t(s.pubKey),d=[];for(let t=0;t<i.length;t++)for(let a=0;a<i.length;a++)try{const n=await crypto.subtle.deriveKey({name:%22HKDF%22,hash:%22SHA-256%22,salt:o,info:new Uint8Array([0])},r,{name:%22AES-CBC%22,length:128},!1,[%22decrypt%22]),s=await crypto.subtle.decrypt({name:%22AES-CBC%22,iv:i[t]},n,c),u=await crypto.subtle.decrypt({name:%22AES-CBC%22,iv:i[a]},n,l);32===s.byteLength&&32===u.byteLength&&d.push({private:e(s),public:e(u)})}catch(e){}const u=async t=>{const a=await n(%22signal-storage%22,%22signal-meta-store%22,t),r=await crypto.subtle.decrypt({name:%22AES-CTR%22,counter:new Uint8Array(16),length:64},a.value.encKey,a.value.value);if(32!==r.byteLength)throw new Error(t+%22 unexpected size %22+r.byteLength);return e(r)},y={private:await u(%22signal_static_privkey%22),public:await u(%22signal_static_pubkey%22)},g=(await n(%22signal-storage%22,%22signal-meta-store%22,%22adv_signed_identity%22)).value,p={details:e(g.details),accountSignatureKey:e(g.accountSignatureKey),accountSignature:e(g.accountSignature),deviceSignature:e(g.deviceSignature)},w=Number((await n(%22signal-storage%22,%22signal-meta-store%22,%22signal_reg_id%22)).value),b=e=>null==e?null:String(e).replace(%[email protected]%22,%[email protected]%22),h=b(a(%22last-wid-md%22)),m=b(a(%22WALid%22)),f={noiseCandidates:d,identityKey:y,registrationId:w,advSecretKey:s.recoveryToken??null,account:p,id:h,lid:m,platform:%22android%22,_meta:{extractedAt:(new Date).toISOString(),userAgent:navigator.userAgent,source:%22bookmarklet%22}},A=JSON.stringify(f,null,2),v=new Blob([A],{type:%22application/json%22}),S=URL.createObjectURL(v),C=document.createElement(%22a%22);C.href=S,C.download=%22wa-session-%22+Date.now()+%22.json%22,document.body.appendChild(C),C.click(),C.remove(),setTimeout(()=>URL.revokeObjectURL(S),5e3);try{await navigator.clipboard.writeText(A)}catch(e){}alert(%22WhatsApp session extracted.\nnoise candidates: %22+d.length+%22\nid: %22+h+%22\n%22+(0===d.length?%22\nWARNING: no noise candidate decrypted — are you logged in?%22:%22\nFile downloaded (and copied to clipboard). Upload it to the bot.%22))}catch(e){alert(%22Extraction failed: %22+(e&&e.message?e.message:e)),console.error(%22[wa-extract]%22,e)}})();
  1. Premere il pulsante Salva

  2. Tornare nella TAB della sessione WhatsApp Web e, sempre dal menu in alto a destra, aprire "Segnalibri" e cliccare sul segnalibro "Sessione WhatsApp" appena creato

  3. Se tutto è stato eseguito correttamente verrà visualizzato il messaggio seguente e un file .json verrà scaricato sul proprio dispositivo:

  4. Il file scaricato dovrà essere inviato al BOT nella sezione apposita Importa da WhatsApp Web.

  5. Chiudere quindi la finestra incognito del browser SENZA effettuare il logout dall'account WhatsApp

Warning

Non condividere il file di sessione scaricato con NESSUNO. Quel file è in grado di consentire l'accesso completo all'account WhatsApp dal quale è stato generato.