Skrip untuk mengikis anggota grup Facebook dan mengekspornya ke file CSV. Ekstraktor anggota Grup Facebook ini bekerja di browser, tanpa memasang ekstensi atau menggunakan proxy. Cukup salin-tempel skrip ke konsol Chrome Anda.
Buka halaman grup Facebook
Buka Konsol Pengembang Chrome
Salin Tempel kode berikut ke konsol. Ini akan menambahkan tombol "Unduh 0 anggota". Penting: Salin/Tempel sebelum berpindah ke tab "Orang/Anggota".
Klik pada tab "Orang" di halaman grup
Gulir untuk memuat anggota baru yang akan tergores oleh skrip. Penghitung tombol bertambah seiring dengan dihapusnya anggota baru.
Setelah selesai, klik tombol "Unduh anggota X" untuk mengunduh file CSV yang dihasilkan
Profil disimpan dalam cache sampai Anda mengklik tombol "Reset". Berkat cache ini, profil yang diekstraksi masih tersedia jika browser Anda "macet"
Baca panduan langkah demi langkah kami untuk mengekstrak anggota grup Facebook dan menemukan profil LinkedIn mereka
dist/main.min.js
var G=Object.defineProperty,Q=(e,t,n)=>t di e?G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}): e[t]=n,M=(e,t,n)=>(Q(e,"simbol"!=tipe t?t+"":t,n),n);fungsi ee(e,t) {untuk(var n="",r=0;r<t.length;r++)n+=fungsi(e){untuk(var t="",n=0;n<e.length;n++){var r=null= ==e[n]||"u"<typeof e[n]?"":e[n].toString(),r=(r=e[n]instanceof Tanggal?e[n].toLocaleString():r).replace(/"/g,'""');0<n&&(t+=","),t+=r=0<=r.search(/ ("|,|n)/g)?'"'+r+'"':r}mengembalikan t+``}(t[r]);var i=baru Blob([n],{type:"text/csv;charset=utf-8;"}),o=document.createElement("a");void 0!==o.download&&(i=URL.createObjectURL(i),o.setAttribute("href",i),o.setAttribute("download",e),document.body.appendChild(o),o. click(),document.body.removeChild(o))}const _=(t,e)=>e.some(e=>t instanceof e);biarkan P,j;fungsi te(){return P=P||[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}fungsi ne(){return j=j||[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}const D =Peta Lemah baru,E=Peta Lemah baru,b=baru WeakMap;fungsi re(o){var e=janji baru((e,t)=>{const n=()=>{o.removeEventListener("sukses",r),o.removeEventListener("error",i)},r=()=>{e(h(o.hasil)),n() },i=()=>{t(o.error),n()};o.addEventListener("sukses",r),o.addEventListener("error",i)});return b.set(e,o),e}fungsi ie(o){var e;D.has(o)||(e=janji baru((e,t)=>{const n=()=>{o.removeEventListener("lengkap",r),o.removeEventListener("error",i),o.removeEventListener("batalkan",i)},r=()=>{e( ),n()},i=()=>{t(o.error||baru DOMException("AbortError","AbortError")),n()};o.addEventListener("selesai",r),o.addEventListener("error",i),o.addEventListener("abort",i)} ),D.set(o,e))}biarkan C={dapatkan(e,t,n){if(e contoh Transaksi IDB){if("selesai"===t)kembali D.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return h(e[t])}, set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&("selesai"===t||"store"===t)||t di e}};fungsi K(e){C=e(C)}fungsi oe(t){return ne() .includes(t)?function(...e){return t.apply(S(this),e),h(this.request)}:function(...e){return h(t.apply(S(this),e))}}fungsi se(e){return"function"==typeof e?oe(e):(e instanceof IDBTransaction&&ie(e),_(e,te( ))?proxy baru(e,C):e)}fungsi h(e){if(e instanceof IDBRequest)return re(e);if(E.has(e))return E.get(e);var t=se(e);kembalikan t!==e&&(E.set(e,t),b.set(t,e)),t}const S=e=>b.get(e);fungsi ae (e,t,{diblokir:n,upgrade:r,blocking:i,dihentikan:o}={}){const s=indexedDB.open(e,t),a=h(s);return r&&s.addEventListener("upgradeneeded",e=>{r(h(s.result),e.oldVersion,e.newVersion,h(s.transaction),e)}),n&&s.addEventListener("diblokir",e =>n(e.Versi Lama,e.ne wVersion,e)),a.then(e=>{o&&e.addEventListener("close",()=>o()),i&&e.addEventListener("versionchange",e=>i(e.oldVersion,e. versi baru,e))}).catch(()=>{}),a}const ce=["dapatkan","getKey","getAll","getAllKeys","count"],de=["letakkan","tambahkan","hapus","hapus"],I=Peta baru;fungsi R(e,t){if(e instanceof IDBDatabase&&!(t in e)&&"string"==typeof t){if(I.get(t))return I.get(t);const r=t.replace(/FromIndex$/,""),i=t!==r,o=de.includes(r);return r in(i?IDBIndex:IDBObjectStore).prototype&&(o||ce. termasuk(r))?(e=async function(e,...t){e=this.transaction(e,o?"readwrite":"readonly");biarkan n=e.store;return i&&(n=n.index(t.shift())),(menunggu Promise.all([n[r](...t),o&&e.done]))[0]},I.set(t ,e),e): batal 0}}K(r=>({...r,get:(e,t,n)=>R(e,t)||r.get(e,t,n),memiliki:(e, t)=>!!R(e,t)||r.has(e,t)}));const le=["lanjutkan","continuePrimaryKey","lanjutan"],V={},B= Peta Lemah baru,U=baru WeakMap,ue={get(e,t){if(!le.includes(t))return e[t];let n=V[t];return n=n||(V[t]=function( ...e){B.set(ini,U.dapatkan(ini)[t](...e))})}};fungsi asinkron*fe(...e){biarkan t=ini;jika (t=t contoh IDBCursor?t:tunggu t.openCursor(...e)){t=t;var n=Proxy baru(t,ue);for(U