diessica / no-seen

:eyes: blocks "seen" marks on Facebook and Instagram
41 stars 5 forks source link

Stopped working for firefox #7

Open tashtash69 opened 1 year ago

tashtash69 commented 1 year ago

Stories are now showing as viewed. Please update the extension.

dwiyatci commented 1 year ago

Seems like they start using /api/graphql endpoint. In this case, checking only the URL won't be enough. 🤷🏻‍♂️ We have to cancel the request whose fb_api_req_friendly_name=PolarisAPIReelSeenMutation in the formData of the requestBody, i.e. if requestBody.formData.fb_api_req_friendly_name === 'PolarisAPIReelSeenMutation' -> cancel.

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest#details_2

cc: @diessica

kenarsene commented 1 year ago

any updates on this?

dwiyatci commented 1 year ago

@nhymxu Great stuff, Dung! 🤩 And thanks a lot for your work and being so handy at this.

A couple of remarks (as of today):

nhymxu commented 1 year ago

Because I'm just using stories, so my extension only focus to this

Create PR to this repo is okay for me, not too hard.

I create new one because look like @diessica not active maintain this repo 🤣

dwiyatci commented 1 year ago

so my extension only focus to this

I'd like to create a PR to your repo to support "no-seen" for Messenger and IGD (Instagram Direct) Web as well, but I failed to figure out how the read-receipt works on both over the weekend. I believe they both pretty much have the same new mechanics; it might go along the /ajax/navigation/ request lines, but yeah. Do you have any idea? This guy @ChangJoo-Park seems to have cracked it tho 🍘 😃 https://chrome.google.com/webstore/detail/unseen-for-facebook/fgmiepijfchkhchobiopcemoajoedkkm

flame-0 commented 6 months ago

so my extension only focus to this

I'd like to create a PR to your repo to support "no-seen" for Messenger and IGD (Instagram Direct) Web as well, but I failed to figure out how the read-receipt works on both over the weekend. I believe they both pretty much have the same new mechanics; it might go along the /ajax/navigation/ request lines, but yeah. Do you have any idea? This guy @ChangJoo-Park seems to have cracked it tho 🍘 😃 chrome.google.com/webstore/detail/unseen-for-facebook/fgmiepijfchkhchobiopcemoajoedkkm

Just wondering if you guys have updates on this? I tried to extract it, but the functions are obfuscated.

Edit 1: This extension works for blocking seen and typing. https://github.com/Sherly1001/tame Edit 2: With the new update from Meta, blocking seen and typing features are not working in end-to-end chats, except it's a group chat.

dwiyatci commented 6 months ago

Just wondering if you guys have updates on this? I tried to extract it, but the functions is obfuscated.

Nope. 🙁 Unfortunately guy who creates that "ESUIT | Un Seen for Facebook™" Chrome extension plans to monetize his extension all along, and therefore he doesn't open-source it. 🫤 What did you try to extract? The extension build code?

Also, from the extension page:

this extension is not officially developed by Facebook™, The author is @William Chen

Not sure who he is 🤷🏻‍♂️, and seems like I tagged the wrong guy before hahah. I guess the only way to contact him is via https://www.facebook.com/esuitdev or fbesuit@gmail.com. Perhaps you can contact him to disclose "the trick" for this particular feature only... :D (actually, I need not to be seen more for Instagram DM tho)

flame-0 commented 6 months ago

Nope. 🙁 Unfortunately guy who creates that "ESUIT | Un Seen for Facebook™" Chrome extension plans to monetize his extension all along, and therefore he doesn't open-source it. 🫤 What did you try to extract? The extension build code?

I extracted the build code, .crx. While extracting various addons and extensions some time ago, I noticed his code differs; I couldn't read it properly.

flame-0 commented 2 months ago

Tame got updated to support E2EE chats. Check it out! https://github.com/Sherly1001/tame/releases/tag/v0.3.4

cc: @Sherly1001

dwiyatci commented 2 months ago

Thanks for the pointer, @flame-0! :D Actually, some 2-3 weeks ago I also tried to "decompile" that Chrome extension and fed it to the AI in order to help me understand the mechanics. I believe it all boils down to overriding the occurrences of markThreadAsRead function in the script(s) contents.

str = str.replace(
    /markThreadAsRead:function.*?{/,
    'markThreadAsRead:function(){return;'
)

I found similar thing in Sherly's commit. But then, we'd need another special trick to be able to execute the overridden scripts that have been loaded to get around the Content Security Policy (CSP) that protects the browser from running a forged script (I guess Sher also managed to figure it out somehow 😆).

All in all, unfortunately life gets in my way to put all these things together properly (classic excuse 🙄😅), but still would love to see it happen for social-ghost-ext (for Instagram bit) - I'm just gonna mention https://github.com/nhymxu/social-ghost-ext/issues/4 and https://github.com/nhymxu/social-ghost-ext/issues/5 here so that this info is linked there :) cc: @nhymxu

diessica commented 1 week ago

It's so cool to see your contributions coming together to address the problem. Unfortunately I didn't have issues notifications enabled and missed all of this. I am really sorry. If that's not too late, here's a transparent update:

I'm likely archiving this repository

I don't think this is a good solution anymore. Packaging Instagram/Facebook request blockers as an extension is VERY user-friendly, but not ideal to maintain and release fast enough across extension stores. A minor API change, and it breaks. For that, an advanced but generic request blocker (e.g. Ublock Origin, or DevTools > Network > Block URL if simple) would work best, and we could share the snippet for that instead (similarly to how people share URLs blocklists e.g. https://github.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist) so users can instantly deploy it. I recognise that more code is needed to block requests these days (beyond plain URLs), but it's all about cracking the request pattern and intercepting it. Happy to hear your thoughts on that.

By the end of this week, I will update this repo, and will share a blog post developing on my ideas above, perhaps with some how-tos.

Alternatives

Thanks again for the discussion and understanding!