Last active
April 24, 2025 04:32
-
-
Save taciturnaxolotl/792b2de83ed872259ed3887a92407302 to your computer and use it in GitHub Desktop.
bluesky custom verifiers bookmarklet
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| javascript:(()%3D%3E%7Bif(window.bskyTrustedUsersInitialized)return%20void%20console.log(%22Trusted%20Users%20script%20already%20initialized%22)%3Bwindow.bskyTrustedUsersInitialized%3D!0%3Bconst%20e%3D%22bsky_trusted_users%22%2Ct%3D%22bsky_verification_cache%22%2Cn%3D()%3D%3E%7Bconst%20t%3DlocalStorage.getItem(e)%3Breturn%20t%3FJSON.parse(t)%3A%5B%5D%7D%2Co%3Dt%3D%3E%7BlocalStorage.setItem(e%2CJSON.stringify(t))%7D%2Cr%3De%3D%3E%7Bconst%20t%3Dn()%3Bt.includes(e)%7C%7C(t.push(e)%2Co(t))%7D%2Cs%3De%3D%3E%7Bconst%20t%3Dn().filter((t%3D%3Et!%3D%3De))%3Bo(t)%7D%2Ci%3D()%3D%3E%7Bconst%20e%3DlocalStorage.getItem(t)%3Breturn%20e%3FJSON.parse(e)%3A%7B%7D%7D%2Cc%3De%3D%3E%7BlocalStorage.setItem(t%2CJSON.stringify(e))%7D%2Cd%3De%3D%3Ei()%5Be%5D%7C%7Cnull%2Cl%3De%3D%3Ee%26%26Date.now()-e.timestamp%3C864e5%2Ca%3De%3D%3E%7Bconst%20t%3Di()%3Bt%5Be%5D%26%26(delete%20t%5Be%5D%2Cc(t)%2Cconsole.log(%60Removed%20%24%7Be%7D%20from%20verification%20cache%60))%7D%3Blet%20p%3D%5B%5D%2Cu%3Dnull%3Bconst%20m%3Dasync%20e%3D%3E%7Bu%3De%3Bconst%20t%3Dn()%3Bif(p%3D%5B%5D%2C0%3D%3D%3Dt.length)return%20console.log(%22No%20trusted%20users%20to%20check%20for%20verifications%22)%2C!1%3Bconsole.log(%60Checking%20if%20any%20trusted%20users%20have%20verified%20%24%7Be%7D%60)%3Bconst%20o%3Dt.map((async%20t%3D%3E%7Btry%7Bconst%20n%3Dasync%20e%3D%3E%7Bconst%20t%3Dd(e)%3Bif(t%26%26l(t))return%20console.log(%60Using%20cached%20verification%20data%20for%20%24%7Be%7D%60)%2Ct.records%3Bconsole.log(%60Fetching%20fresh%20verification%20data%20for%20%24%7Be%7D%60)%3Blet%20n%3D%5B%5D%2Co%3Dnull%2Cr%3D!0%3Bfor(%3Br%3B)%7Bconst%20t%3Do%3F%60https%3A%2F%2Fbsky.social%2Fxrpc%2Fcom.atproto.repo.listRecords%3Frepo%3D%24%7Be%7D%26collection%3Dapp.bsky.graph.verification%26cursor%3D%24%7Bo%7D%60%3A%60https%3A%2F%2Fbsky.social%2Fxrpc%2Fcom.atproto.repo.listRecords%3Frepo%3D%24%7Be%7D%26collection%3Dapp.bsky.graph.verification%60%2Cs%3Dawait%20fetch(t)%2Ci%3Dawait%20s.json()%3Bi.records%26%26i.records.length%3E0%26%26(n%3D%5B...n%2C...i.records%5D)%2Ci.cursor%3Fo%3Di.cursor%3Ar%3D!1%7Dreturn((e%2Ct)%3D%3E%7Bconst%20n%3Di()%3Bn%5Be%5D%3D%7Brecords%3At%2Ctimestamp%3ADate.now()%7D%2Cc(n)%7D)(e%2Cn)%2Cn%7D%2Co%3Dawait%20n(t)%3Bif(console.log(%60Received%20verification%20data%20from%20%24%7Bt%7D%60%2C%7Brecords%3Ao%7D)%2Co.length%3E0)for(const%20n%20of%20o)if(n.value%26%26n.value.subject%3D%3D%3De)%7Bconsole.log(%60%24%7Be%7D%20is%20verified%20by%20trusted%20user%20%24%7Bt%7D%60)%2Cp.push(t)%3Bbreak%7Dreturn%7BtrustedUser%3At%2Csuccess%3A!0%7D%7Dcatch(e)%7Breturn%20console.error(%60Error%20checking%20verifications%20from%20%24%7Bt%7D%3A%60%2Ce)%2C%7BtrustedUser%3At%2Csuccess%3A!1%2Cerror%3Ae%7D%7D%7D))%2Cr%3Dawait%20Promise.all(o)%3Breturn%20console.log(%60API%20calls%20completed%3A%20%24%7Br.length%7D%60)%2Cconsole.log(%60Successful%20calls%3A%20%24%7Br.filter((e%3D%3Ee.success)).length%7D%60)%2Cconsole.log(%60Failed%20calls%3A%20%24%7Br.filter((e%3D%3E!e.success)).length%7D%60)%2Cp.length%3E0%3F(g(p)%2C!0)%3A(console.log(%60%24%7Be%7D%20is%20not%20verified%20by%20any%20trusted%20users%60)%2Cf()%2C!1)%7D%2Cf%3D()%3D%3E%7Bconst%20e%3Ddocument.getElementById(%22trusted-users-pill-container%22)%3Be%26%26e.remove()%3Bconst%20t%3Ddocument.createElement(%22div%22)%3Bt.id%3D%22trusted-users-pill-container%22%2Ct.style.cssText%3D%22%5Cn%20%20%20%20%20%20position%3A%20fixed%3B%5Cn%20%20%20%20%20%20bottom%3A%2020px%3B%5Cn%20%20%20%20%20%20right%3A%2020px%3B%5Cn%20%20%20%20%20%20z-index%3A%2010000%3B%5Cn%20%20%20%20%20%20display%3A%20flex%3B%5Cn%20%20%20%20%20%20border-radius%3A%2020px%3B%5Cn%20%20%20%20%20%20overflow%3A%20hidden%3B%5Cn%20%20%20%20%20%20box-shadow%3A%200%202px%2010px%20rgba(0%2C%200%2C%200%2C%200.2)%3B%5Cn%20%20%20%20%22%3Bconst%20n%3Ddocument.createElement(%22button%22)%3Bn.id%3D%22trusted-users-recheck-button%22%2Cn.innerHTML%3D%22%E2%86%BB%20Recheck%22%2Cn.style.cssText%3D%22%5Cn%20%20%20%20%20%20padding%3A%2010px%2015px%3B%5Cn%20%20%20%20%20%20background-color%3A%20%232D578D%3B%5Cn%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20font-weight%3A%20bold%3B%5Cn%20%20%20%20%20%20border-top-left-radius%3A%2020px%3B%5Cn%20%20%20%20%20%20border-bottom-left-radius%3A%2020px%3B%5Cn%20%20%20%20%22%2Cn.addEventListener(%22click%22%2C(async()%3D%3E%7Bif(u)%7Bconst%20e%3Ddocument.getElementById(%22user-trusted-verification-badge%22)%3Be%26%26e.remove()%2Cn.innerHTML%3D%22%E2%9F%B3%20Checking...%22%2Cn.disabled%3D!0%2Cawait%20m(u)%2Cn.innerHTML%3D%22%E2%86%BB%20Recheck%22%2Cn.disabled%3D!1%7D%7D))%3Bconst%20o%3Ddocument.createElement(%22div%22)%3Bo.style.cssText%3D%22%5Cn%20%20%20%20%20%20width%3A%201px%3B%5Cn%20%20%20%20%20%20background-color%3A%20rgba(255%2C%20255%2C%20255%2C%200.3)%3B%5Cn%20%20%20%20%22%3Bconst%20r%3Ddocument.createElement(%22button%22)%3Br.id%3D%22bsky-trusted-settings-button%22%2Cr.textContent%3D%22Settings%22%2Cr.style.cssText%3D%22%5Cn%20%20%20%20%20%20padding%3A%2010px%2015px%3B%5Cn%20%20%20%20%20%20background-color%3A%20%232D578D%3B%5Cn%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20font-weight%3A%20bold%3B%5Cn%20%20%20%20%20%20border-top-right-radius%3A%2020px%3B%5Cn%20%20%20%20%20%20border-bottom-right-radius%3A%2020px%3B%5Cn%20%20%20%20%22%2Ct.appendChild(n)%2Ct.appendChild(o)%2Ct.appendChild(r)%2Cdocument.body.appendChild(t)%2Cr.addEventListener(%22click%22%2C(()%3D%3E%7By%3F(y.style.display%3D%22flex%22%2Cb())%3Av()%7D))%7D%2Cg%3De%3D%3E%7Bconst%20t%3Ddocument.querySelectorAll('%5Bdata-testid%3D%22profileHeaderDisplayName%22%5D')%2Cn%3Dt%5Bt.length-1%5D%3Bif(console.log(n)%2Cn)%7Bconst%20t%3Ddocument.getElementById(%22user-trusted-verification-badge%22)%3Bt%26%26t.remove()%3Bconst%20o%3Ddocument.createElement(%22span%22)%3Bo.id%3D%22user-trusted-verification-badge%22%2Co.innerHTML%3D%22%E2%9C%93%22%3Bconst%20r%3De.length%3E1%3F%60Verified%20by%3A%20%24%7Be.join(%22%2C%20%22)%7D%60%3A%60Verified%20by%20%24%7Be%5B0%5D%7D%60%3Bo.title%3Dr%2Co.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20background-color%3A%20%230070ff%3B%5Cn%20%20%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20%20%20border-radius%3A%2050%25%3B%5Cn%20%20%20%20%20%20%20%20width%3A%2018px%3B%5Cn%20%20%20%20%20%20%20%20height%3A%2018px%3B%5Cn%20%20%20%20%20%20%20%20margin-left%3A%208px%3B%5Cn%20%20%20%20%20%20%20%20font-size%3A%2012px%3B%5Cn%20%20%20%20%20%20%20%20font-weight%3A%20bold%3B%5Cn%20%20%20%20%20%20%20%20cursor%3A%20help%3B%5Cn%20%20%20%20%20%20%20%20display%3A%20inline-flex%3B%5Cn%20%20%20%20%20%20%20%20align-items%3A%20center%3B%5Cn%20%20%20%20%20%20%20%20justify-content%3A%20center%3B%5Cn%20%20%20%20%20%20%22%2Co.addEventListener(%22click%22%2C(t%3D%3E%7Bt.stopPropagation()%2Ch(e)%7D))%2Cn.appendChild(o)%7Df()%7D%2Ch%3De%3D%3E%7Bconst%20t%3Ddocument.getElementById(%22verifiers-popup%22)%3Bt%26%26t.remove()%3Bconst%20n%3Ddocument.createElement(%22div%22)%3Bn.id%3D%22verifiers-popup%22%2Cn.style.cssText%3D%22%5Cn%20%20%20%20%20%20position%3A%20fixed%3B%5Cn%20%20%20%20%20%20top%3A%2050%25%3B%5Cn%20%20%20%20%20%20left%3A%2050%25%3B%5Cn%20%20%20%20%20%20transform%3A%20translate(-50%25%2C%20-50%25)%3B%5Cn%20%20%20%20%20%20background-color%3A%20%2324273A%3B%5Cn%20%20%20%20%20%20padding%3A%2020px%3B%5Cn%20%20%20%20%20%20border-radius%3A%2010px%3B%5Cn%20%20%20%20%20%20z-index%3A%2010002%3B%5Cn%20%20%20%20%20%20box-shadow%3A%200%204px%2012px%20rgba(0%2C%200%2C%200%2C%200.2)%3B%5Cn%20%20%20%20%20%20max-width%3A%20400px%3B%5Cn%20%20%20%20%20%20width%3A%2090%25%3B%5Cn%20%20%20%20%22%2Cn.innerHTML%3D%60%5Cn%20%20%20%20%20%20%3Ch3%20style%3D%22margin-top%3A%200%3B%20color%3A%20white%3B%22%3EProfile%20Verifiers%3C%2Fh3%3E%5Cn%20%20%20%20%20%20%3Cdiv%20style%3D%22max-height%3A%20300px%3B%20overflow-y%3A%20auto%3B%22%3E%5Cn%20%20%20%20%20%20%20%20%24%7Be.map((e%3D%3E%60%5Cn%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22padding%3A%208px%200%3B%20border-bottom%3A%201px%20solid%20%23444%3B%20color%3A%20white%3B%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%24%7Be%7D%5Cn%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%20%20%20%20%20%20%60)).join(%22%22)%7D%5Cn%20%20%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%20%20%20%20%3Cbutton%20id%3D%22close-verifiers-popup%22%20style%3D%22%5Cn%20%20%20%20%20%20%20%20margin-top%3A%2015px%3B%5Cn%20%20%20%20%20%20%20%20padding%3A%208px%2015px%3B%5Cn%20%20%20%20%20%20%20%20background-color%3A%20%23473A3A%3B%5Cn%20%20%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20%20%20border-radius%3A%204px%3B%5Cn%20%20%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20%22%3EClose%3C%2Fbutton%3E%5Cn%20%20%20%20%60%2Cdocument.body.appendChild(n)%2Cdocument.getElementById(%22close-verifiers-popup%22).addEventListener(%22click%22%2C(()%3D%3E%7Bn.remove()%7D))%2Cdocument.addEventListener(%22click%22%2C(function%20e(t)%7Bn.contains(t.target)%7C%7C(n.remove()%2Cdocument.removeEventListener(%22click%22%2Ce))%7D))%7D%3Blet%20y%3Dnull%3Bconst%20b%3D()%3D%3E%7Bconst%20e%3Ddocument.getElementById(%22trustedUsersList%22)%3Bif(!e)return%3Bconst%20t%3Dn()%3Bif(e.innerHTML%3D%22%22%2C0%3D%3D%3Dt.length)return%20void(e.innerHTML%3D%22%3Cp%3ENo%20trusted%20users%20added%20yet.%3C%2Fp%3E%22)%3Bfor(const%20n%20of%20t)%7Bconst%20t%3Ddocument.createElement(%22div%22)%3Bt.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20display%3A%20flex%3B%5Cn%20%20%20%20%20%20%20%20justify-content%3A%20space-between%3B%5Cn%20%20%20%20%20%20%20%20align-items%3A%20center%3B%5Cn%20%20%20%20%20%20%20%20padding%3A%208px%200%3B%5Cn%20%20%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%23eee%3B%5Cn%20%20%20%20%20%20%22%2Ct.innerHTML%3D%60%5Cn%20%20%20%20%20%20%20%20%3Cspan%3E%24%7Bn%7D%3C%2Fspan%3E%5Cn%20%20%20%20%20%20%20%20%3Cbutton%20class%3D%22remove-user%22%20data-handle%3D%22%24%7Bn%7D%22%20style%3D%22background-color%3A%20%23CE3838%3B%20color%3A%20white%3B%20border%3A%20none%3B%20border-radius%3A%204px%3B%20padding%3A%205px%2010px%3B%20cursor%3A%20pointer%3B%22%3ERemove%3C%2Fbutton%3E%5Cn%20%20%20%20%20%20%60%2Ce.appendChild(t)%7Dconst%20o%3Ddocument.querySelectorAll(%22.remove-user%22)%3Bfor(const%20e%20of%20o)e.addEventListener(%22click%22%2C(e%3D%3E%7Bconst%20t%3De.target.getAttribute(%22data-handle%22)%3Bs(t)%2Ca(t)%2Cb()%7D))%7D%2Cx%3Dasync()%3D%3E%7Btry%7Bconst%20e%3DlocalStorage.getItem(%22BSKY_STORAGE%22)%3Blet%20t%3Dnull%3Bif(e)try%7Bconst%20n%3DJSON.parse(e)%3Bn.session.currentAccount%26%26(t%3Dn.session.currentAccount)%7Dcatch(e)%7Bconsole.error(%22Error%20parsing%20BSKY_STORAGE%20data%3A%22%2Ce)%7Dif(!t%7C%7C!t.handle)return%20void%20alert(%22Could%20not%20determine%20your%20Bluesky%20handle.%20Please%20ensure%20you're%20logged%20in.%22)%3Bif(!t%7C%7C!t.handle)return%20void%20alert(%22Unable%20to%20determine%20your%20Bluesky%20handle.%20Make%20sure%20you're%20logged%20in.%22)%3Bconst%20o%3Dt.handle%2Cs%3Ddocument.getElementById(%22importVerificationsBtn%22)%2Ci%3Ds.textContent%3Bs.textContent%3D%22Importing...%22%2Cs.disabled%3D!0%3Blet%20c%3D%5B%5D%2Cd%3Dnull%2Cl%3D!0%3Bfor(%3Bl%3B)%7Bconst%20e%3Dd%3F%60https%3A%2F%2Fbsky.social%2Fxrpc%2Fcom.atproto.repo.listRecords%3Frepo%3D%24%7Bo%7D%26collection%3Dapp.bsky.graph.verification%26cursor%3D%24%7Bd%7D%60%3A%60https%3A%2F%2Fbsky.social%2Fxrpc%2Fcom.atproto.repo.listRecords%3Frepo%3D%24%7Bo%7D%26collection%3Dapp.bsky.graph.verification%60%2Ct%3Dawait%20fetch(e)%2Cn%3Dawait%20t.json()%3Bn.records%26%26n.records.length%3E0%26%26(c%3D%5B...c%2C...n.records%5D)%2Cn.cursor%3Fd%3Dn.cursor%3Al%3D!1%7Dconst%20a%3D%7Brecords%3Ac%7D%3Bif(!a.records%7C%7C0%3D%3D%3Da.records.length)return%20alert(%22No%20verification%20records%20found%20in%20your%20account.%22)%2Cs.textContent%3Di%2Cvoid(s.disabled%3D!1)%3Bconst%20p%3D%5B%5D%3Bfor(const%20e%20of%20a.records)console.log(e.value.handle)%2Cp.push(e.value.handle)%3Blet%20u%3D0%3Bfor(const%20e%20of%20p)%7Bn().includes(e)%7C%7C(r(e)%2Cu%2B%2B)%7Db()%2Cs.textContent%3Di%2Cs.disabled%3D!1%2Calert(%60Successfully%20imported%20%24%7Bu%7D%20verified%20users%20from%20your%20account.%60)%7Dcatch(e)%7Bconsole.error(%22Error%20importing%20verifications%3A%22%2Ce)%2Calert(%22Error%20importing%20verifications.%20Check%20console%20for%20details.%22)%3Bconst%20t%3Ddocument.getElementById(%22importVerificationsBtn%22)%3Bt%26%26(t.textContent%3D%22Import%20Verifications%22%2Ct.disabled%3D!1)%7D%7D%2Cv%3D()%3D%3E%7By%3Ddocument.createElement(%22div%22)%2Cy.id%3D%22bsky-trusted-settings-modal%22%2Cy.style.cssText%3D%22%5Cn%20%20%20%20%20%20display%3A%20none%3B%5Cn%20%20%20%20%20%20position%3A%20fixed%3B%5Cn%20%20%20%20%20%20top%3A%200%3B%5Cn%20%20%20%20%20%20left%3A%200%3B%5Cn%20%20%20%20%20%20width%3A%20100%25%3B%5Cn%20%20%20%20%20%20height%3A%20100%25%3B%5Cn%20%20%20%20%20%20background-color%3A%20rgba(0%2C%200%2C%200%2C%200.5)%3B%5Cn%20%20%20%20%20%20z-index%3A%2010001%3B%5Cn%20%20%20%20%20%20justify-content%3A%20center%3B%5Cn%20%20%20%20%20%20align-items%3A%20center%3B%5Cn%20%20%20%20%22%3Bconst%20e%3Ddocument.createElement(%22div%22)%3Be.style.cssText%3D%22%5Cn%20%20%20%20%20%20background-color%3A%20%2324273A%3B%5Cn%20%20%20%20%20%20padding%3A%2020px%3B%5Cn%20%20%20%20%20%20border-radius%3A%2010px%3B%5Cn%20%20%20%20%20%20width%3A%20400px%3B%5Cn%20%20%20%20%20%20max-height%3A%2080vh%3B%5Cn%20%20%20%20%20%20overflow-y%3A%20auto%3B%5Cn%20%20%20%20%22%3Bconst%20n%3Ddocument.createElement(%22div%22)%3Bn.innerHTML%3D'%3Ch2%20style%3D%22margin-top%3A%200%3B%22%3ETrusted%20Bluesky%20Users%3C%2Fh2%3E'%3Bconst%20o%3Ddocument.createElement(%22div%22)%3Bo.innerHTML%3D'%5Cn%20%20%20%20%20%20%20%20%3Cp%3EAdd%20Bluesky%20handles%20you%20trust%3A%3C%2Fp%3E%5Cn%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22display%3A%20flex%3B%20margin-bottom%3A%2015px%3B%20position%3A%20relative%3B%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%3Cinput%20id%3D%22trustedUserInput%22%20type%3D%22text%22%20placeholder%3D%22Search%20for%20a%20user...%22%20style%3D%22flex%3A%201%3B%20padding%3A%208px%3B%20margin-right%3A%2010px%3B%20border%3A%201px%20solid%20%23ccc%3B%20border-radius%3A%204px%3B%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id%3D%22addTrustedUserBtn%22%20style%3D%22background-color%3A%20%232D578D%3B%20color%3A%20white%3B%20border%3A%20none%3B%20border-radius%3A%204px%3B%20padding%3A%208px%2015px%3B%20cursor%3A%20pointer%3B%22%3EAdd%3C%2Fbutton%3E%5Cn%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%5Cn%20%20%20%20%20%20'%3Bconst%20s%3Ddocument.createElement(%22div%22)%3Bs.style.cssText%3D%22%5Cn%20%20%20%20%20%20margin-top%3A%2010px%3B%5Cn%20%20%20%20%20%20margin-bottom%3A%2015px%3B%5Cn%20%20%20%20%22%3Bconst%20i%3Ddocument.createElement(%22button%22)%3Bi.id%3D%22importVerificationsBtn%22%2Ci.textContent%3D%22Import%20Your%20Verifications%22%2Ci.style.cssText%3D%22%5Cn%20%20%20%20%20%20background-color%3A%20%232D578D%3B%5Cn%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20border-radius%3A%204px%3B%5Cn%20%20%20%20%20%20padding%3A%208px%2015px%3B%5Cn%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20width%3A%20100%25%3B%5Cn%20%20%20%20%22%2Ci.addEventListener(%22click%22%2Cx)%2Cs.appendChild(i)%3Bconst%20c%3Ddocument.createElement(%22div%22)%3Bc.id%3D%22trustedUsersList%22%2Cc.style.cssText%3D%22%5Cn%20%20%20%20%20%20margin-top%3A%2015px%3B%5Cn%20%20%20%20%20%20border-top%3A%201px%20solid%20%23eee%3B%5Cn%20%20%20%20%20%20padding-top%3A%2015px%3B%5Cn%20%20%20%20%22%3Bconst%20d%3Ddocument.createElement(%22div%22)%3Bd.style.cssText%3D%22%5Cn%20%20%20%20%20%20margin-top%3A%2015px%3B%5Cn%20%20%20%20%20%20padding-top%3A%2015px%3B%5Cn%20%20%20%20%20%20border-top%3A%201px%20solid%20%23eee%3B%5Cn%20%20%20%20%22%3Bconst%20l%3Ddocument.createElement(%22button%22)%3Bl.textContent%3D%22Clear%20Verification%20Cache%22%2Cl.style.cssText%3D%22%5Cn%20%20%20%20%20%20padding%3A%208px%2015px%3B%5Cn%20%20%20%20%20%20background-color%3A%20%23735A5A%3B%5Cn%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20border-radius%3A%204px%3B%5Cn%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20margin-right%3A%2010px%3B%5Cn%20%20%20%20%22%2Cl.addEventListener(%22click%22%2C(()%3D%3E%7BlocalStorage.removeItem(t)%2Cconsole.log(%22Verification%20cache%20cleared%22)%2Calert(%22Verification%20cache%20cleared.%20Fresh%20data%20will%20be%20fetched%20on%20next%20check.%22)%7D))%2Cd.appendChild(l)%3Bconst%20a%3Ddocument.createElement(%22button%22)%3Ba.textContent%3D%22Close%22%2Ca.style.cssText%3D%22%5Cn%20%20%20%20%20%20margin-top%3A%2020px%3B%5Cn%20%20%20%20%20%20padding%3A%208px%2015px%3B%5Cn%20%20%20%20%20%20background-color%3A%20%23473A3A%3B%5Cn%20%20%20%20%20%20border%3A%20none%3B%5Cn%20%20%20%20%20%20border-radius%3A%204px%3B%5Cn%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%22%2Ce.appendChild(n)%2Ce.appendChild(o)%2Ce.appendChild(s)%2Ce.appendChild(c)%2Ce.appendChild(d)%2Ce.appendChild(a)%2Cy.appendChild(e)%2Cdocument.body.appendChild(y)%3Bconst%20p%3Ddocument.getElementById(%22trustedUserInput%22)%3Blet%20u%3Bp.addEventListener(%22input%22%2C(e%3D%3E%7BclearTimeout(u)%2Cu%3DsetTimeout((async()%3D%3E%7Bconst%20t%3De.target.value.trim()%3Bif(t.length%3E%3D2)%7Bconst%20e%3Dawait(async%20e%3D%3E%7Bif(!e%7C%7Ce.length%3C2)return%5B%5D%3Btry%7Bconst%20t%3Dawait%20fetch(%60https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fapp.bsky.actor.searchActors%3Fterm%3D%24%7BencodeURIComponent(e)%7D%26limit%3D5%60)%3Breturn(await%20t.json()).actors%7C%7C%5B%5D%7Dcatch(e)%7Breturn%20console.error(%22Error%20searching%20for%20users%3A%22%2Ce)%2C%5B%5D%7D%7D)(t)%3B((e%2Ct)%3D%3E%7Bconst%20n%3Ddocument.getElementById(%22autocomplete-dropdown%22)%3Bif(n%26%26n.remove()%2C0%3D%3D%3De.length)return%3Bconst%20o%3Ddocument.createElement(%22div%22)%3Bo.id%3D%22autocomplete-dropdown%22%2Co.style.cssText%3D%60%5Cn%20%20%20%20%20%20position%3A%20absolute%3B%5Cn%20%20%20%20%20%20background-color%3A%20%232A2E3D%3B%5Cn%20%20%20%20%20%20border%3A%201px%20solid%20%23444%3B%5Cn%20%20%20%20%20%20border-radius%3A%204px%3B%5Cn%20%20%20%20%20%20box-shadow%3A%200%204px%208px%20rgba(0%2C0%2C0%2C0.2)%3B%5Cn%20%20%20%20%20%20max-height%3A%20300px%3B%5Cn%20%20%20%20%20%20overflow-y%3A%20auto%3B%5Cn%20%20%20%20%20%20width%3A%20%24%7Bt.offsetWidth%7Dpx%3B%5Cn%20%20%20%20%20%20z-index%3A%2010002%3B%5Cn%20%20%20%20%20%20margin-top%3A%202px%3B%5Cn%20%20%20%20%60%3Bconst%20r%3Dt.getBoundingClientRect()%3Bo.style.left%3D%60%24%7Br.left%7Dpx%60%2Co.style.top%3D%60%24%7Br.bottom%7Dpx%60%3Bfor(const%20n%20of%20e)%7Bconst%20e%3Ddocument.createElement(%22div%22)%3Be.className%3D%22autocomplete-item%22%2Ce.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20display%3A%20flex%3B%5Cn%20%20%20%20%20%20%20%20align-items%3A%20center%3B%5Cn%20%20%20%20%20%20%20%20padding%3A%208px%2012px%3B%5Cn%20%20%20%20%20%20%20%20cursor%3A%20pointer%3B%5Cn%20%20%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20%20%20border-bottom%3A%201px%20solid%20%23444%3B%5Cn%20%20%20%20%20%20%22%2Ce.onmouseover%3D()%3D%3E%7Be.style.backgroundColor%3D%22%233A3F55%22%7D%2Ce.onmouseout%3D()%3D%3E%7Be.style.backgroundColor%3D%22%22%7D%3Bconst%20r%3Ddocument.createElement(%22img%22)%3Br.src%3Dn.avatar%7C%7C%22https%3A%2F%2Fbsky.app%2Fstatic%2Fdefault-avatar.png%22%2Cr.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20width%3A%2032px%3B%5Cn%20%20%20%20%20%20%20%20height%3A%2032px%3B%5Cn%20%20%20%20%20%20%20%20border-radius%3A%2050%25%3B%5Cn%20%20%20%20%20%20%20%20margin-right%3A%2010px%3B%5Cn%20%20%20%20%20%20%20%20object-fit%3A%20cover%3B%5Cn%20%20%20%20%20%20%22%3Bconst%20s%3Ddocument.createElement(%22div%22)%3Bs.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20display%3A%20flex%3B%5Cn%20%20%20%20%20%20%20%20flex-direction%3A%20column%3B%5Cn%20%20%20%20%20%20%22%3Bconst%20i%3Ddocument.createElement(%22div%22)%3Bi.textContent%3Dn.displayName%7C%7Cn.handle%2Ci.style.fontWeight%3D%22bold%22%3Bconst%20c%3Ddocument.createElement(%22div%22)%3Bc.textContent%3Dn.handle%2Cc.style.fontSize%3D%220.8em%22%2Cc.style.opacity%3D%220.8%22%2Cs.appendChild(i)%2Cs.appendChild(c)%2Ce.appendChild(r)%2Ce.appendChild(s)%2Ce.addEventListener(%22click%22%2C(()%3D%3E%7Bt.value%3Dn.handle%2Co.remove()%7D))%2Co.appendChild(e)%7Ddocument.body.appendChild(o)%2Cdocument.addEventListener(%22click%22%2C(function%20e(n)%7Bn.target%3D%3D%3Dt%7C%7Co.contains(n.target)%7C%7C(o.remove()%2Cdocument.removeEventListener(%22click%22%2Ce))%7D))%7D)(e%2Cp)%7Delse%7Bconst%20e%3Ddocument.getElementById(%22autocomplete-dropdown%22)%3Be%26%26e.remove()%7D%7D)%2C300)%7D))%2Ca.addEventListener(%22click%22%2C(()%3D%3E%7By.style.display%3D%22none%22%7D))%3Bconst%20m%3D()%3D%3E%7Bconst%20e%3Ddocument.getElementById(%22trustedUserInput%22)%2Ct%3De.value.trim()%3Bif(t)%7Br(t)%2Ce.value%3D%22%22%2Cb()%3Bconst%20n%3Ddocument.getElementById(%22autocomplete-dropdown%22)%3Bn%26%26n.remove()%7D%7D%3Bdocument.getElementById(%22addTrustedUserBtn%22).addEventListener(%22click%22%2Cm)%2Cp.addEventListener(%22keydown%22%2C(e%3D%3E%7B%22Enter%22%3D%3D%3De.key%26%26(e.preventDefault()%2Cm())%7D))%2Cy.addEventListener(%22click%22%2C(e%3D%3E%7Be.target%3D%3D%3Dy%26%26(y.style.display%3D%22none%22)%7D))%2Cb()%7D%2Ck%3D()%3D%3E%7Bconst%20e%3Dwindow.location.href%3Bif(e.match(%2Fbsky%5C.app%5C%2Fprofile%5C%2F%5B%5E%5C%2F%5D%2B%24%2F)%7C%7Ce.match(%2Fbsky%5C.app%5C%2Fprofile%5C%2F%5B%5E%5C%2F%5D%2B%5C%2Ffollows%2F)%7C%7Ce.match(%2Fbsky%5C.app%5C%2Fprofile%5C%2F%5B%5E%5C%2F%5D%2B%5C%2Ffollowers%2F))%7Bconst%20t%3De.split(%22%2Fprofile%2F%22)%5B1%5D.split(%22%2F%22)%5B0%5D%3Bconsole.log(%22Detected%20profile%20page%20for%3A%22%2Ct)%2Cf()%2Cy%7C%7Cv()%2Cfetch(%60https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fcom.atproto.repo.getRecord%3Frepo%3D%24%7Bt%7D%26collection%3Dapp.bsky.actor.profile%26rkey%3Dself%60).then((e%3D%3Ee.json())).then((e%3D%3E%7Bconsole.log(%22User%20profile%20data%3A%22%2Ce)%3Bconst%20t%3De.uri.split(%22%2F%22)%5B2%5D%3Bconsole.log(%22User%20DID%3A%22%2Ct)%2Cm(t)%7D)).catch((e%3D%3E%7Bconsole.error(%22Error%20checking%20profile%3A%22%2Ce)%7D))%2Cconsole.log(%22Bluesky%20profile%20detected%22)%7Delse%7Bu%3Dnull%2Cp%3D%5B%5D%3Bconst%20e%3Ddocument.getElementById(%22user-trusted-verification-badge%22)%3Be%26%26e.remove()%3Bconst%20t%3Ddocument.getElementById(%22trusted-users-pill-container%22)%3Bt%26%26t.remove()%7D%7D%3Bk()%3Bconst%20E%3Dasync()%3D%3E%7Bconst%20e%3DArray.from(document.querySelectorAll('a%5Bhref%5E%3D%22%2Fprofile%2F%22%5D%3Anot(%3Ahas(*))'))%2Ct%3Dnew%20Map%3Bfor(const%20n%20of%20e)%7Bconst%20e%3Dn.parentElement%3Be%26%26!t.has(e)%26%26t.set(e%2Cn)%7Dconst%20o%3DArray.from(t.values())%3Bif(0!%3D%3Do.length)%7Bconsole.log(%60Found%20%24%7Bo.length%7D%20possible%20user%20links%20on%20page%60)%3Bfor(const%20e%20of%20o)try%7Bif(%22true%22%3D%3D%3De.getAttribute(%22data-verification-checked%22))continue%3Be.setAttribute(%22data-verification-checked%22%2C%22true%22)%3Bconst%20t%3De.getAttribute(%22href%22).split(%22%2Fprofile%2F%22)%5B1%5D%3Bif(!t)continue%3Bif(t.split(%22%2F%22).length%3E1)continue%3Bconst%20o%3De.parentElement%3Bif(o)%7Bif(o.querySelector(%22.trusted-user-inline-badge%22))continue%3Btry%7Bconst%20e%3Dawait%20fetch(%60https%3A%2F%2Fpublic.api.bsky.app%2Fxrpc%2Fcom.atproto.repo.getRecord%3Frepo%3D%24%7Bt%7D%26collection%3Dapp.bsky.actor.profile%26rkey%3Dself%60)%2Cr%3D(await%20e.json()).uri.split(%22%2F%22)%5B2%5D%2Cs%3Dn()%3Blet%20i%3D!1%3Bconst%20c%3D%5B%5D%3Bfor(const%20e%20of%20s)%7Bconst%20t%3Dd(e)%3Bif(t%26%26l(t))%7Bconst%20n%3Dt.records%3Bfor(const%20t%20of%20n)if(t.value%26%26t.value.subject%3D%3D%3Dr)%7Bi%3D!0%2Cc.push(e)%3Bbreak%7D%7D%7Dif(i%26%26c.length%3E0)%7Bconst%20e%3Ddocument.createElement(%22span%22)%3Be.className%3D%22trusted-user-inline-badge%22%2Ce.innerHTML%3D%22%E2%9C%93%22%3Bconst%20t%3Dc.length%3E1%3F%60Verified%20by%3A%20%24%7Bc.join(%22%2C%20%22)%7D%60%3A%60Verified%20by%20%24%7Bc%5B0%5D%7D%60%3Be.title%3Dt%2Ce.style.cssText%3D%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20%230070ff%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20white%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-radius%3A%2050%25%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20width%3A%2014px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20height%3A%2014px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%2010px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-weight%3A%20bold%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cursor%3A%20help%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20display%3A%20inline-flex%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20align-items%3A%20center%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20justify-content%3A%20center%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20margin-left%3A%204px%3B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%2Ce.addEventListener(%22click%22%2C(e%3D%3E%7Be.stopPropagation()%2Ch(c)%7D))%2Co.firstChild.after(e)%2Co.style.flexDirection%3D%22row%22%2Co.style.alignItems%3D%22center%22%7D%7Dcatch(e)%7Bconsole.error(%60Error%20checking%20verification%20for%20%24%7Bt%7D%3A%60%2Ce)%7D%7D%7Dcatch(e)%7Bconsole.error(%22Error%20processing%20profile%20link%3A%22%2Ce)%7D%7D%7D%3BsetTimeout(E%2C1e3)%2C(()%3D%3E%7Bconst%20e%3D()%3D%3E%7BclearTimeout(window.userLinksCheckTimeout)%2Cwindow.userLinksCheckTimeout%3DsetTimeout((()%3D%3E%7BE()%7D)%2C300)%7D%3Bnew%20MutationObserver((t%3D%3E%7Blet%20n%3D!1%3Bfor(const%20e%20of%20t)%7Bif(e.addedNodes.length%3E0)for(const%20t%20of%20e.addedNodes)if(t.nodeType%3D%3D%3DNode.ELEMENT_NODE%26%26(t.querySelector('a%5Bhref%5E%3D%22%2Fprofile%2F%22%5D')%7C%7C%22A%22%3D%3D%3Dt.tagName%26%26t.getAttribute(%22href%22)%3F.startsWith(%22%2Fprofile%2F%22)))%7Bn%3D!0%3Bbreak%7Dif(n)break%7Dn%26%26e()%7D)).observe(document.body%2C%7BchildList%3A!0%2Csubtree%3A!0%7D)%2CsetInterval(e%2C5e3)%7D)()%3B(()%3D%3E%7Blet%20e%3Dlocation.href%3Bnew%20MutationObserver((()%3D%3E%7Bif(location.href!%3D%3De)%7Bconst%20t%3De%3Be%3Dlocation.href%2Cconsole.log(%22URL%20changed%20from%3A%22%2Ct%2C%22to%3A%22%2Clocation.href)%2Cu%3Dnull%2Cp%3D%5B%5D%3Bconst%20n%3Ddocument.getElementById(%22user-trusted-verification-badge%22)%3Bn%26%26n.remove()%3Bconst%20o%3Ddocument.getElementById(%22trusted-users-pill-container%22)%3Bo%26%26o.remove()%2CsetTimeout(k%2C500)%7D%7D)).observe(document%2C%7Bsubtree%3A!0%2CchildList%3A!0%7D)%7D)()%7D)()%3B |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
grab the data and paste it as the URL in a new bookmark