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

looks like X/twitter(?) broke something again #983

Open
animegrafmays opened this issue Aug 15, 2023 · 686 comments
Open

looks like X/twitter(?) broke something again #983

animegrafmays opened this issue Aug 15, 2023 · 686 comments

Comments

@animegrafmays
Copy link


8493b396fd05f26fe681a6abe9a849dc983d091fd4472a53dc3aa72547b030c4

BANKA2017 added a commit to BANKA2017/twitter-monitor-assets that referenced this issue Aug 15, 2023
@ghost
Copy link

ghost commented Aug 15, 2023

Also, the syndication api for showReplies=true does not work anymore:
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true
but showReplies=false still works, showing the tweets ordered by like count...
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

@beingnajib
Copy link

Yes, it is not working now. I hope the Nitter people fix this soon.

@paulamei
Copy link

paulamei commented Aug 15, 2023

Is there a online/CLI tool converting
https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk
to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

@nerra0pos
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

@iceFbr
Copy link

iceFbr commented Aug 15, 2023

Down again...

@Dheatly23
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

That's because in that specific example, those tweets were years ago. Look again at the like count, notice anything?

@ghost
Copy link

ghost commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

We can just search for the first { from begin and first } from end and then parse as json.
If a user has not so many tweets (500-1000) then the chance is quite good that also newer tweets are within the most popular 100.
But of course it's not a very good solution. At least, nitter should have it as a backup when nothing else works, this method can be used.

@Write
Copy link

Write commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

We can just search for the first { from begin and first } from end and then parse as json. If a user has not so many tweets (500-1000) then the chance is quite good that also newer tweets are within the most popular 100. But of course it's not a very good solution. At least, nitter should have it as a backup when nothing else works, this method can be used.

Indeed

#!/usr/bin/python3

import requests
import re
import urllib

url  = "https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk"

with urllib.request.urlopen(url) as response:
    encoding = response.info().get_param('charset', 'utf8')
    html = response.read().decode(encoding)
    result = re.search('script id="__NEXT_DATA__" type="application\/json">([^>]*)<\/script>', html)[1]

    print(result)

@paulamei
Copy link

paulamei commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

@Write
Copy link

Write commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Here's an example for one tweet only :

 {
            "type": "tweet",
            "entry_id": "tweet-1519480761749016577",
            "sort_index": "1691455400412446720",
            "content": {
              "tweet": {
                "id": 0,
                "location": "",
                "conversation_id_str": "1519480761749016577",
                "created_at": "Thu Apr 28 00:56:58 +0000 2022",
                "display_text_range": [
                  0,
                  52
                ],
                "entities": {
                  "user_mentions": [],
                  "urls": [],
                  "hashtags": [],
                  "symbols": [],
                  "media": []
                },
                "favorite_count": 4600599,
                "favorited": false,
                "full_text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "id_str": "1519480761749016577",
                "lang": "en",
                "permalink": "/elonmusk/status/1519480761749016577",
                "possibly_sensitive": false,
                "quote_count": 171975,
                "reply_count": 187438,
                "retweet_count": 649833,
                "retweeted": false,
                "text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "user": {
                  "blocking": false,
                  "created_at": "Tue Jun 02 20:12:29 +0000 2009",
                  "default_profile": false,
                  "default_profile_image": false,
                  "description": "Blades of Glory",
                  "entities": {
                    "description": {
                      "urls": []
                    },
                    "url": {}
                  },
                  "fast_followers_count": 0,
                  "favourites_count": 30569,
                  "follow_request_sent": false,
                  "followed_by": false,
                  "followers_count": 153112066,
                  "following": false,
                  "friends_count": 410,
                  "has_custom_timelines": false,
                  "highlightedLabel": {
                    "badge": {
                      "url": "https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg"
                    },
                    "description": "X",
                    "userLabelType": "BusinessLabel",
                    "userLabelDisplayType": "Badge"
                  },
                  "id": 0,
                  "id_str": "44196397",
                  "is_translator": false,
                  "listed_count": 126597,
                  "location": "𝕏Ð",
                  "media_count": 1659,
                  "name": "Elon Musk",
                  "normal_followers_count": 153112066,
                  "notifications": false,
                  "profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1690621312",
                  "profile_image_url_https": "https://pbs.twimg.com/profile_images/1683325380441128960/yRsRRjGO_normal.jpg",
                  "protected": false,
                  "screen_name": "elonmusk",
                  "show_all_inline_media": false,
                  "statuses_count": 29441,
                  "time_zone": "",
                  "translator_type": "none",
                  "url": "",
                  "utc_offset": 0,
                  "verified": false,
                  "withheld_in_countries": [],
                  "withheld_scope": "",
                  "is_blue_verified": true
                }
              }
            }
          },

EDIT : Maybe you meant a directly usable solution for an end user, and of course it's not, the snippet need to be adapted by a dev.

@paulamei
Copy link

paulamei commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Ok, thank you, I'll try this.

@jcmag
Copy link

jcmag commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

@null-routed
Copy link

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

It retrieves the tweets with the highest like count from that user, which doesnt sound good if your goal is retrieving the most recent tweets, as there's no guarantee new tweets will make it to the top 100 tweets from that user. And even if they did, it might take a considerable amount of time

@yuv418
Copy link

yuv418 commented Aug 15, 2023

I've noticed that for smaller accounts that have less than 100 tweets, that syndication URL does not load any tweets.

@nerra0pos
Copy link

Also, the syndication api for showReplies=true does not work anymore: https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=true but showReplies=false still works, showing the tweets ordered by like count... https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk?showReplies=false

Not really. showReplies=false shows years-old content when not logged in.

That's because in that specific example, those tweets were years ago. Look again at the like count, notice anything?

No. That is the case for all big accounts. I am interested in the most recent Tweets and this approach will lead to nothing.

@kpopdev
Copy link

kpopdev commented Aug 15, 2023

Indeed

Interesting, but this doesn't return RSS with 'item', 'pubDate' etc. tags. Maybe a script using https://github.com/lkiesow/python-feedgen would do the job?

Not sure I understand ? It expose far more informations than needed and it does expose the date and all

Here's an example for one tweet only :

 {
            "type": "tweet",
            "entry_id": "tweet-1519480761749016577",
            "sort_index": "1691455400412446720",
            "content": {
              "tweet": {
                "id": 0,
                "location": "",
                "conversation_id_str": "1519480761749016577",
                "created_at": "Thu Apr 28 00:56:58 +0000 2022",
                "display_text_range": [
                  0,
                  52
                ],
                "entities": {
                  "user_mentions": [],
                  "urls": [],
                  "hashtags": [],
                  "symbols": [],
                  "media": []
                },
                "favorite_count": 4600599,
                "favorited": false,
                "full_text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "id_str": "1519480761749016577",
                "lang": "en",
                "permalink": "/elonmusk/status/1519480761749016577",
                "possibly_sensitive": false,
                "quote_count": 171975,
                "reply_count": 187438,
                "retweet_count": 649833,
                "retweeted": false,
                "text": "Next I’m buying Coca-Cola to put the cocaine back in",
                "user": {
                  "blocking": false,
                  "created_at": "Tue Jun 02 20:12:29 +0000 2009",
                  "default_profile": false,
                  "default_profile_image": false,
                  "description": "Blades of Glory",
                  "entities": {
                    "description": {
                      "urls": []
                    },
                    "url": {}
                  },
                  "fast_followers_count": 0,
                  "favourites_count": 30569,
                  "follow_request_sent": false,
                  "followed_by": false,
                  "followers_count": 153112066,
                  "following": false,
                  "friends_count": 410,
                  "has_custom_timelines": false,
                  "highlightedLabel": {
                    "badge": {
                      "url": "https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg"
                    },
                    "description": "X",
                    "userLabelType": "BusinessLabel",
                    "userLabelDisplayType": "Badge"
                  },
                  "id": 0,
                  "id_str": "44196397",
                  "is_translator": false,
                  "listed_count": 126597,
                  "location": "𝕏Ð",
                  "media_count": 1659,
                  "name": "Elon Musk",
                  "normal_followers_count": 153112066,
                  "notifications": false,
                  "profile_banner_url": "https://pbs.twimg.com/profile_banners/44196397/1690621312",
                  "profile_image_url_https": "https://pbs.twimg.com/profile_images/1683325380441128960/yRsRRjGO_normal.jpg",
                  "protected": false,
                  "screen_name": "elonmusk",
                  "show_all_inline_media": false,
                  "statuses_count": 29441,
                  "time_zone": "",
                  "translator_type": "none",
                  "url": "",
                  "utc_offset": 0,
                  "verified": false,
                  "withheld_in_countries": [],
                  "withheld_scope": "",
                  "is_blue_verified": true
                }
              }
            }
          },

EDIT : Maybe you meant a directly usable solution for an end user, and of course it's not, the snippet need to be adapted by a dev.

im using this for my bot and it working fine with cookies and headers.

@intuser
Copy link

intuser commented Aug 15, 2023

Is there a online/CLI tool converting https://syndication.twitter.com/srv/timeline-profile/screen-name/elonmusk to RSS feed? Then we could individually download the HTML from a logged in profile and do the conversion in a second step.

calling the syndication URL without being logged in twitter doesn't retrieve the most recent tweets. If I call this url in postman, I retrieve 100 tweets from 10/19/2018 to 07/31/2023; no tweets from august...

Yes. And there is at least one tweet from August with more likes (>807K) than some older tweets which are included (e.g. <680K).

@Mr-Freewan
Copy link

is there any forecast for solving this problem?

@ghost
Copy link

ghost commented Aug 15, 2023

Looks like https://nitter.privacydev.net/ is working

@zedeus
Copy link
Owner

zedeus commented Aug 15, 2023

That one is a fork which uses account credentials. See #830

@ghost
Copy link

ghost commented Aug 15, 2023

I am aware but couldn't nitter implement a system that aurora uses with lots of accounts that rotate per user?

@ghost
Copy link

ghost commented Aug 15, 2023

I am aware but couldn't nitter implement a system that aurora uses with lots of accounts that rotate per user?

That's hard to maintain and simple for twitter to ban by just filtering "if number of accounts per IP > SOME_CONSTANT: ban all of them"

@ghost
Copy link

ghost commented Aug 15, 2023

Looks like https://nitter.privacydev.net/ is working

User feeds not working on this

@dawnerd
Copy link

dawnerd commented Aug 15, 2023

I switched to the privacydevel fork, credentials in but its still 404ing the same endpoint upstream is having problems with

@intuser
Copy link

intuser commented Aug 15, 2023

Strange. privacydev (without credentials) works more or less for @ElonMusk, but not for other users like for instance @BarackObama.

@jeveloper
Copy link

Sorry about this @animegrafmays. Stopped

@RunlevelConsulting
Copy link

RunlevelConsulting commented Aug 19, 2024

Now that the moronic-talk is over. Questions about Nitter, specifically with regards to the regular accounts version.

For those that don't know, the guest_accounts version used 2 curl commands to generate temporary accounts, however there was recently a fork (which I can't find right now) that used real accounts instead.

  1. Can someone point me to the repository? It's lost under all the irrelevant talk
  2. Still working?
  3. Does it only take 1 account or is it like guest_accounts where you could add multiple credentials (i.e - Multiple real accounts)
  4. Any info on rate limits? Presumably it's the same rate limit as if you were using Twitter normally, e.g. If you scroll really fast for a while through someone's profile, it'll eventually fai and say it can't load anymore, I always assumed this was a rate limit.

Any info helpful, thank you!

@unixfox
Copy link
Contributor

unixfox commented Aug 19, 2024

@RunlevelConsulting literally the 7th result after typing "nitter" in the github search: https://github.com/sekai-soft/guide-nitter-self-hosting

@psegovias
Copy link

out of nowhere my instance started working again, anyone else?

@Yetangitu
Copy link

Mine never stopped working (except for video, that has been broken for a long time) but I'm using it with a real account, would you happen to have it configured with some of those as well?

@psegovias
Copy link

Yes, I'm working with some real accounts, but I remember that stopped working too, I used my own instance for scraping, now I migrated everything to a new system, I'm glad that nitter is still working.

Repository owner deleted a comment from shagunsharma6677 Sep 28, 2024
Repository owner deleted a comment from Bleach-pixel Oct 16, 2024
@Yetangitu
Copy link

...except for video, that has been broken for a long time

Replying to myself for those who also have problems playing video: it does work when you disable Enable HLS video streaming and proxy video streaming through the server while keeping Enable mp3 video playback enabled in Settings (the cog wheel in the top bar, top right). In this case you get mp4 video files which can be streamed directly in the interface.

If you're using Firefox you may need to disable 'Enhanced Tracking Protection' since it (rightfully) considers twimg.com (where video content is served from) a tracking domain and will refuse access when that setting is enabled. With these changes video is fully functional in Nitter.

@lukefromdc
Copy link

lukefromdc commented Oct 28, 2024 via email

@Yetangitu
Copy link

You can add per-site exceptions for ETP (Enhanced Tracking Protection) in Firefox. These exceptions are all-or-nothing so it is not possible to only let twimg.com through for the whitelisted site. This could be made to work if Firefox allow users to state an ETP level - off, standard, strict or custom - for whitelisted sites but that is currently not the case.

@lukefromdc
Copy link

lukefromdc commented Oct 28, 2024 via email

@Apachez-
Copy link

Apachez- commented Nov 3, 2024

Whatever it might be worth here is a working set of settings when using https://xcancel.com/

Display
Theme: Twitter
Infinite scrolling (experimental, requires JavaScript): Enabled
Make profile sidebar stick to top: Disabled
Support bidirectional text (makes clicking on tweets harder): Disabled
Hide tweet stats (replies, retweets, likes): Disabled
Hide profile banner: Disabled
Hide pinned tweets: Enabled
Hide tweet replies: Disabled
Square profile pictures: Disabled

Media
Enable mp4 video playback (only for gifs): Enabled
Enable HLS video streaming (requires JavaScript): Enabled
Proxy video streaming through the server (might be slow): Disabled
Mute videos by default: Enabled
Autoplay gifs: Disabled

Link replacements (blank to disable)
Twitter -> Nitter: xcancel.com
YouTube -> Piped/Invidious: youtube.com
Reddit -> Teddit/Libreddit: teddit.net

Only drawback so far is that the replacement of youtube doesnt work in a post, only for quoted posts.

And that loading too many pages at once will throw you into some kind of temporary blacklist at xcancel.com (so have at least a few seconds between each load/refresh if you visit more than one account).

Also Im not sure on how multiloading usernames affects getting onto the tempory blacklist.

That is when you load multiple accounts in one go such as https://xcancel.com/elonmusk,cb_doge,joerogan,nsagov (just picked some random accounts as example :-)

@animegrafmays
Copy link
Author

tonight during the voting in the US presidential election we topped 1.21 million unique visitors on nitter.poast.org. right now, during the counting we are averaging 21 thousand requests per second across 4 ryzen 7 3800x load balanced.

this is insane. and the 400 accounts we are using isn't even close to enough. i offloaded a lot of requests via proxy directly to twitter via a separate proxy_pass. helped massively. never been more proud to put so much effort into running it 🙏
thank you for everything @zedeus, i think everybody here is thankful for your efforts

@dhdurgee
Copy link

dhdurgee commented Nov 9, 2024

I have been using https://nitter.privacydev.net/MarkDavis/ to keep an eye on the one twitter user I follow as I much prefer the Nitter presentation.

For the past three days I have been getting nothing but "Instance has been rate limited. Use another instance or try again later." messages when I attempt to check.

Did they break something new, or am I the only one seeing this?

@animegrafmays
Copy link
Author

works fine for us -- https://nitter.poast.org/MarkDavis/

might be that the instance you are using is genuinely rate limited. not sure how many accounts he is using, but on our instance we run 4 dedicated servers in round robin with 100s of accounts, so usually reloading on ours fixes that issue if it ever appears for you.

this isn't Xitter changing anything or nitter being broken, it's related to rate limits of accounts used to display the tweets to you

@dhdurgee
Copy link

dhdurgee commented Nov 9, 2024

Thank you for your feedback. It does indeed appear to be a problem with that instance in particular. I have changed over to xcancel.com and it is working well. I had though the instance I was using the only functional one and was pleased to discover I was wrong.

@animegrafmays
Copy link
Author

you're welcome friend. im glad you found a solution that fits your needs

@unixfox
Copy link
Contributor

unixfox commented Nov 9, 2024

@dhdurgee here is all the instances that works: https://status.d420.de

@initd0
Copy link

initd0 commented Nov 13, 2024

I have been using https://nitter.privacydev.net/MarkDavis/ to keep an eye on the one twitter user I follow as I much prefer the Nitter presentation.

For the past three days I have been getting nothing but "Instance has been rate limited. Use another instance or try again later." messages when I attempt to check.

Did they break something new, or am I the only one seeing this?

Im experiencing the same issue as you since few days now. However im using Tor and none of the other current working instances including xcancel.com allow Tor connections which is very sad.
https://nitter.privacydev.net/ was the only instance that you could use to browse with Tor.
I hope the owner can get it back up or hope other instances can allow Tor at least

@animegrafmays
Copy link
Author

animegrafmays commented Nov 13, 2024

I hope the owner can get it back up or hope other instances can allow Tor at least

I made the decision after several days of heavy abuse from TOR exits to block them. I will not be removing the block and have automated updating it with any new exits. prior to blocking TOR exits, we were receiving on average over 30k requests per second. after it's down to 10-11k. all used for scraping. it's unfortunate that people abuse TOR in this way, but it's not something I will consider removing.

@unixfox
Copy link
Contributor

unixfox commented Nov 13, 2024

@initd0

Im experiencing the same issue as you since few days now. However im using Tor and none of the other current working instances including xcancel.com allow Tor connections which is very sad.
https://nitter.privacydev.net/ was the only instance that you could use to browse with Tor.
I hope the owner can get it back up or hope other instances can allow Tor at least

Odd xcancel.com works for me on Tor with the default settings.

Can you send an email at antibot [at] xcancel.com? With some explanation and a screenshot.

I'll try to see what's going on.

@lukefromdc
Copy link

lukefromdc commented Nov 13, 2024 via email

@lukefromdc
Copy link

lukefromdc commented Nov 13, 2024 via email

@jonathantullett
Copy link

I'm sure this has been answered but as it's now an enormous thread, it's hard to find the details:

What is the canonical way to configure a nitter instance using multiple accounts for use, ideally with tokens being refreshed if needed? Thank you.

@unixfox
Copy link
Contributor

unixfox commented Nov 14, 2024

I'm sure this has been answered but as it's now an enormous thread, it's hard to find the details:

What is the canonical way to configure a nitter instance using multiple accounts for use, ideally with tokens being refreshed if needed? Thank you.

https://github.com/sekai-soft/guide-nitter-self-hosting

@initd0
Copy link

initd0 commented Nov 14, 2024

@initd0

Im experiencing the same issue as you since few days now. However im using Tor and none of the other current working instances including xcancel.com allow Tor connections which is very sad.
https://nitter.privacydev.net/ was the only instance that you could use to browse with Tor.
I hope the owner can get it back up or hope other instances can allow Tor at least

Odd xcancel.com works for me on Tor with the default settings.

Can you send an email at antibot [at] xcancel.com? With some explanation and a screenshot.

I'll try to see what's going on.

If you can just whitelist QuiteRSS reader, that would be great, because it throws an error saying "RSS reader not yet whitelist!" - I think thats the only issue preventing from using Tor in the reader.

The actual onion links on the wiki dont really work either.

@unixfox
Copy link
Contributor

unixfox commented Nov 14, 2024

If you can just whitelist QuiteRSS reader, that would be great, because it throws an error saying "RSS reader not yet whitelist!" - I think thats the only issue preventing from using Tor in the reader.

The actual onion links on the wiki dont really work either.

Please follow the instructions and send an email at rss [at] xcancel.com

@cmj
Copy link

cmj commented Nov 14, 2024

This should work for people wanting to add accounts by hand

https://gist.github.com/cmj/998f59680e3549e7f181057074eccaa3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests