Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

18+/"sensitive" tweets no longer available #829

Closed
kaijudude opened this issue Apr 7, 2023 · 77 comments · May be fixed by #830 or #897
Closed

18+/"sensitive" tweets no longer available #829

kaijudude opened this issue Apr 7, 2023 · 77 comments · May be fixed by #830 or #897
Labels
enhancement New feature or request

Comments

@kaijudude
Copy link

Any 18+ Tweet that could be viewed before can't be any longer, did some update age restrict them? If so, then how do I switch it off?

@markcellus
Copy link

markcellus commented Apr 7, 2023

I believe this may not be due to a Nitter change. There's been a change Twitter has made that places 18+ content behind an age verification check. Since there's no way they can verify that users (that consume content from their API) are of appropriate age, they just dont include them.

@kaijudude
Copy link
Author

I believe this may not be due to a Nitter change. There's been a change Twitter has made that places 18+ content behind an age verification check. Since there's no way they can verify that users (that consume content from their API) are of appropriate age, they just dont include them.
Well crap, that sucks. Hope they can find a way around it.

@gentlecolts
Copy link

I believe this may not be due to a Nitter change. There's been a change Twitter has made that places 18+ content behind an age verification check. Since there's no way they can verify that users (that consume content from their API) are of appropriate age, they just dont include them.

I can't believe that that's entirely correct, I still see some thumbnailing services, such as vxtwitter, fxtwitter, still functioning in this case. That said, I also note it started occurring on nitter.net itself a few days ago while it only seemingly just started hitting some mirror sites, so I suppose it's possible that it's a slow rollout, but it's still also possible these other sites are doing something that nitter isn't

@AlyoshaVasilieva
Copy link

AlyoshaVasilieva commented Apr 8, 2023

IIRC based on some warnings I've seen when using yt-dlp plus other stuff:

  • The new graphql API won't show 18+ tweets to guest users (aka nitter)
  • the old api that's getting shut down does, but only in some regions

Edit: nitter.net uses more graphql endpoints than most instances because it's running a dev version

@crockpoot
Copy link

Will the workaround be added to the browser instances?

@ultrajae
Copy link

ultrajae commented Apr 9, 2023

IIRC based on some warnings I've seen when using yt-dlp plus other stuff:

  • The new graphql API won't show 18+ tweets to guest users (aka nitter)
  • the old api that's getting shut down does, but only in some regions

Edit: nitter.net uses more graphql endpoints than most instances because it's running a dev version

Idk,.
It seems like Twitter's API has changed

I haven't found one instance that works now.
I tried many of those not updated.

@PrivacyDevel
Copy link
Contributor

PrivacyDevel commented Apr 9, 2023

IIRC based on some warnings I've seen when using yt-dlp plus other stuff:

  • The new graphql API won't show 18+ tweets to guest users (aka nitter)
  • the old api that's getting shut down does, but only in some regions

Edit: nitter.net uses more graphql endpoints than most instances because it's running a dev version

Idk,. It seems like Twitter's API has changed

I haven't found one instance that works now. I tried many of those not updated.

That is definitely the case. I tried them all and a few unofficial ones. And some of the ones I tested have not been updated in months.

Mine has my workaround already applied and works tho.
https://nitter.privacydev.net/

@roryyamm
Copy link

roryyamm commented Apr 9, 2023

How does the workaround… work? Whose credentials are used?

@PrivacyDevel
Copy link
Contributor

How does the workaround… work? Whose credentials are used?

The administrator of the respective instance needs to create a Twitter account, sign in and then put their session information into Nitter's configuration file. This session information will then basically be shared for all users. It's the instance's Twitter account, if you will.

As an end user, you shouldn't need to do anything.

@roryyamm
Copy link

roryyamm commented Apr 9, 2023

Won't that lead to severe rate limiting, though?

@PrivacyDevel
Copy link
Contributor

Won't that lead to severe rate limiting, though?

It seems like that does indeed happen sometimes. But for the most part it seems like it's actually working fairly well for my instance. But I am not yet aware of any other satisfying workaround for that problem. Forcing a user to login and get tracked is not really a satisfying solution for me.

I see the following general solutions for this problem, personally:

  1. rate limit the end users to make it so that the instance works more reliably overall
  2. create more accounts and make the server juggle between different accounts / sessions as needed
  3. maybe try to cache things more aggressively
  4. a combination of those options that I just listed

@crockpoot
Copy link

Luckily, the workaround works but it's unfortunately very slow.

@ultrajae
Copy link

ultrajae commented Apr 9, 2023

indeed, slow. probably rate limited already I guess unfortunately.

I am waiting so far 5 minutes for a vid clip to play. gonna have to give up

At least the tweet comes up tho,
A+ on effort

TYVM

@roryyamm
Copy link

roryyamm commented Apr 9, 2023

Forcing a user to login and get tracked is not really a satisfying solution for me.

What about a voluntary system - ask for a login to increase the rate limit, but fall back on a set account if no login is provided?

I use Nitter mostly for its RSS feeds. Since I have a lot of NSFW accounts as feeds, some of whom tweet frequently, the frequency by which I ask for tweets is probably a major reason why the instance is so slow. If I could somehow pass my own credentials when fetching those RSS feeds, even if it meant I was tracked, I'd do it if that meant a faster or more reliable system with less caching for all.

Perhaps users willing to forgo the non-tracking nature could put a query string at the end of the URL for the RSS feed, containing the exact ct0, auth_token and csrf-token, and the server could use those credentials instead of its own if all are present.

@PrivacyDevel
Copy link
Contributor

PrivacyDevel commented Apr 9, 2023

indeed, slow. probably rate limited already I guess unfortunately.

I am waiting so far 5 minutes for a vid clip to play. gonna have to give up

At least the tweet comes up tho, A+ on effort

TYVM

I just made it so that videos aren't proxied anymore by default on my server to take some load off of it, make it so that people can actually watch videos again on my instance and to hopefully make Twitter not rate limit my instance as harshly.

And I also made it so that the request of userIds is made unauthenticated. Hopefully that makes it so the instance doesn't get rate limited as fast anymore as well.

@crockpoot
Copy link

Forcing a user to login and get tracked is not really a satisfying solution for me.

What about a voluntary system - ask for a login to increase the rate limit, but fall back on a set account if no login is provided?

I use Nitter mostly for its RSS feeds. Since I have a lot of NSFW accounts as feeds, some of whom tweet frequently, the frequency by which I ask for tweets is probably a major reason why the instance is so slow. If I could somehow pass my own credentials when fetching those RSS feeds, even if it meant I was tracked, I'd do it if that meant a faster or more reliable system with less caching for all.

Perhaps users willing to forgo the non-tracking nature could put a query string at the end of the URL for the RSS feed, containing the exact ct0, auth_token and csrf-token, and the server could use those credentials instead of its own if all are present.

A URL-based solution would work the best for my needs, if possible.

@ultrajae
Copy link

ultrajae commented Apr 9, 2023

indeed, slow. probably rate limited already I guess unfortunately.
I am waiting so far 5 minutes for a vid clip to play. gonna have to give up
At least the tweet comes up tho, A+ on effort
TYVM

I just made it so that videos aren't proxied anymore by default on my server to take some load of my poor server, make it so that people can actually watch videos again on my instance and to hopefully make Twitter not rate limit my instance as harshly.

And I also made it so that the request of userIds is made without unauthenticated. Hopefully that makes it so the instance doesn't get rate limited as fast anymore as well.

Thanks for that

Now working flawlessly

Hopefully it can last but appreciate what you're doing nonetheless!

@jve-engineering
Copy link

The search tab still shows the complete feed. Could fetching this way be a workaround? However, it seems to depend on the region again, e.g. US works, DE does not.

@crockpoot
Copy link

crockpoot commented Apr 10, 2023

The search tab still shows the complete feed. Could fetching this way be a workaround? However, it seems to depend on the region again, e.g. US works, DE does not.

That bizarrely works (not with nitter.net but with other instances at least) and adding the "/rss" at the end cleanly enables rss functionality lol thank you very much for this.

@ghost
Copy link

ghost commented Apr 11, 2023

I understand that the solution that is being proposed will probably only be applied by a minority of instances, right?

I see a problem and that is that the +18 tweets seem to disappear completely. I don't know about the web, but in the RSS feed there is not a single reference. This implies that users, far from being able to look for an alternative, won't even be aware of the problem.

Would it be possible for +18 tweets to be included without content (only metadata), even if the instance does not use an account?

@PrivacyDevel
Copy link
Contributor

PrivacyDevel commented Apr 11, 2023

The search tab still shows the complete feed. Could fetching this way be a workaround? However, it seems to depend on the region again, e.g. US works, DE does not.

That's a great find! The only thing that seems to be missing there is the pinned tweet.

@PrivacyDevel
Copy link
Contributor

And threads and retweets unfortunately also don't show up properly in the search

@PrivacyDevel
Copy link
Contributor

Unrelated to the last few posts: It's probably also worth noting that NSFW users don't show up in the search

@zedeus
Copy link
Owner

zedeus commented Apr 12, 2023

Search uses a non-GraphQL endpoint, hence why it isn't affected in the same way. I've considered using search for timelines before, but it provides a much worse experience and is less reliable. I'll look into including sensitive tweets in timelines/RSS instead of omitting them.

I looked into this issue to understand it better, and it seems there's no way around it when using the GraphQL APIs, except authenticating with an account (which supposedly stays working even after the account gets suspended).

@RepresentativeCry66
Copy link

IIRC based on some warnings I've seen when using yt-dlp plus other stuff:

  • The new graphql API won't show 18+ tweets to guest users (aka nitter)
  • the old api that's getting shut down does, but only in some regions

Edit: nitter.net uses more graphql endpoints than most instances because it's running a dev version

Idk,. It seems like Twitter's API has changed
I haven't found one instance that works now. I tried many of those not updated.

That is definitely the case. I tried them all and a few unofficial ones. And some of the ones I tested have not been updated in months.

Mine has my workaround already applied and works tho. https://nitter.privacydev.net/

image

Hmm, doesn't appear like it's working for me. Anything I'm doing wrong or is this an issue on your end?

@PrivacyDevel
Copy link
Contributor

IIRC based on some warnings I've seen when using yt-dlp plus other stuff:

  • The new graphql API won't show 18+ tweets to guest users (aka nitter)
  • the old api that's getting shut down does, but only in some regions

Edit: nitter.net uses more graphql endpoints than most instances because it's running a dev version

Idk,. It seems like Twitter's API has changed
I haven't found one instance that works now. I tried many of those not updated.

That is definitely the case. I tried them all and a few unofficial ones. And some of the ones I tested have not been updated in months.
Mine has my workaround already applied and works tho. https://nitter.privacydev.net/

image Hmm, doesn't appear like it's working for me. Anything I'm doing wrong or is this an issue on your end?

The global search doesn't show nsfw results. That didn't even work when I tried doing it with my usual authentication headers for some reason. When you access a profile directly, it should work tho (unless one of my instances / accounts (signified by the number in the parenthesis) is currently rate limited).
Just open https://nitter.privacydev.net/NAME_OF_NSFW_USER

@zedeus
Copy link
Owner

zedeus commented Apr 15, 2023

Twitter blocks certain searches, including that hashtag. You can check by doing it on Twitter and checking the adaptive.json response in devtools, which should contain an error about the query being invalid.

@SMylk
Copy link

SMylk commented May 14, 2023

@PrivacyDevel could you link to your fork or give any info on the changes made allowing for authentication? thanks!

My fork is here: https://github.com/PrivacyDevel/nitter It's regular Nitter with the commits of the following PRs applied:

* [added login-based workaround to view NSFW content #830](https://github.com/zedeus/nitter/pull/830) (the actual changes needed for the authentication)

* [raise a RateLimitError when Twitter returns HTTP status 429 #837](https://github.com/zedeus/nitter/pull/837) (so that my load balancer can detect account based rate limiting and switch to another instance)

I have currently 4 instances. 3 instances with their own accounts each and a backup instance without any account that's used when all other instances have been rate limited. The selection is done by nginx, my load balancer.

On top of that I also set up caching + rate limiting with nginx as well, in an attempt to speed things up and get rate limited less frequently.

Can we get a hub.docker.com image?

@zedeus zedeus changed the title 18+ Tweets no long available 18+/"sensitive" tweets no longer available May 14, 2023
@c-chell
Copy link

c-chell commented May 15, 2023

I read this discussion, but I still don't understand where to put the "session" information ?
I check to see if the option is in "nitter.conf", but it seems not.
Maybe it's simple, but I don't get the point.

@Owyn
Copy link

Owyn commented May 16, 2023

Are there any pubic instances yet that show NSFW twitter posts?

cuz twitter (nitter) without NSFW is just as useless as tumblr without it

@PrivacyDevel
Copy link
Contributor

PrivacyDevel commented May 16, 2023

Can we get a hub.docker.com image?

@SMylk I am thinking about it.

@PrivacyDevel
Copy link
Contributor

I read this discussion, but I still don't understand where to put the "session" information ? I check to see if the option is in "nitter.conf", but it seems not. Maybe it's simple, but I don't get the point.

@c-chell it's probably easiest if you just use my fork for the time being.

@PrivacyDevel
Copy link
Contributor

Are there any pubic instances yet that show NSFW twitter posts?

cuz twitter (nitter) without NSFW is just as useless as tumblr without it

@Owyn other than mine there are currently no other public ones afaik.

@c-chell
Copy link

c-chell commented May 16, 2023

I read this discussion, but I still don't understand where to put the "session" information ? I check to see if the option is in "nitter.conf", but it seems not. Maybe it's simple, but I don't get the point.

@c-chell it's probably easiest if you just use my fork for the time being.

Thank you, I see you add a PR, I think will wait to get it to the main line.
In the discussion I understand that is already in it.
(I'm not really at ease to get around the Docker build)

@DisasterInbound
Copy link

What about a voluntary system - ask for a login to increase the rate limit, but fall back on a set account if no login is provided?

Perhaps users willing to forgo the non-tracking nature could put a query string at the end of the URL for the RSS feed, containing the exact ct0, auth_token and csrf-token, and the server could use those credentials instead of its own if all are present.

I would like to request for this option to be added.
This should be only an optional setting that would be used to avoid getting rate limited by Twitter (when using the default account) and for also when the fork/mantainer doesn't include their own account.

I personally already have a Twitter account which I use to follow artists but I use nitter to open their feed without having to use lots of CPU such as when using the normal Twitter page. Having an optional setting would allow me to log in and get the content that I want without killing my PC.

@DisasterInbound
Copy link

@PrivacyDevel I found some tweets were still age locked even when using the NSFW3 instance. Interestingly, only some of these tweets are locked but others are properly shown

https://nitter.privacydev.net/huzeu1

25A8MqQ65t5swzwz_2023-06-04_02-14-23

@PrivacyDevel
Copy link
Contributor

@PrivacyDevel I found some tweets were still age locked even when using the NSFW3 instance. Interestingly, only some of these tweets are locked but others are properly shown

https://nitter.privacydev.net/huzeu1

25A8MqQ65t5swzwz_2023-06-04_02-14-23

Thank you for bringing this to my attention. I've never seen this before and was not able to reproduce it either. I feel like I know why this is happening tho. I guess the NFSW instances reused the data from the redis cache that is shared between all of the instances.

@zedeus
Copy link
Owner

zedeus commented Jun 4, 2023

Tweets aren't cached, only pinned tweets, and they are never reused as part of the timeline if they show up again.

@PrivacyDevel
Copy link
Contributor

Hm ok. Thank you for this info @zedeus. Then I actually don't know what might've caused this..

@Owyn
Copy link

Owyn commented Jun 5, 2023

What about when it shows "This tweet is unavailable"? is it the rate limit? cuz sometimes I get an RSS with a tweet (which is shown fine there), but when I open it on nitter (privacydev) it says "unavailable", but on twitter itself it shows fine If I try

@zedeus
Copy link
Owner

zedeus commented Jun 6, 2023

@Owyn you'd have to provide an example for me to know

@jadedgnome
Copy link

is it possible to add support for multiple accounts to get around the rate-limit?

@zedeus zedeus added the enhancement New feature or request label Jun 17, 2023
@mischif
Copy link

mischif commented Jun 24, 2023

Is there anything preventing #830 or #897 being merged to resolve this? I would like to stand up my own instance but I would like to view sensitive feeds.

@zedeus
Copy link
Owner

zedeus commented Aug 19, 2023

Fixed.

@zedeus zedeus closed this as completed Aug 19, 2023
@ghost
Copy link

ghost commented Nov 17, 2023

Checked a dozen instances. Not actually fixed.

@zedeus
Copy link
Owner

zedeus commented Nov 17, 2023

Depends on the country the instance runs in, and potentially the country from which its guest accounts were made, haven't tested that.

@ShadowJonathan
Copy link

Can confirm that generating from the Netherlands and/or Finland (I mixed them, cant know which one worked) works with nsfw accounts

Repository owner deleted a comment from vehosah Feb 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet