From fe1dce630098f3dcb7e6ecac5f37cdd9e3f3747b Mon Sep 17 00:00:00 2001 From: Vincent Cloutier Date: Mon, 27 Mar 2023 19:12:24 -0400 Subject: [PATCH] twitter auth tweaks --- .../Tools/TwitterAuthenticationInitializer.cs | 9 +++++---- src/BirdsiteLive.Twitter/TwitterTweetsService.cs | 6 +++--- src/BirdsiteLive.Twitter/TwitterUserService.cs | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs b/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs index bad4a3e..c8b7a57 100644 --- a/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs +++ b/src/BirdsiteLive.Twitter/Tools/TwitterAuthenticationInitializer.cs @@ -14,7 +14,7 @@ namespace BirdsiteLive.Twitter.Tools public interface ITwitterAuthenticationInitializer { Task MakeHttpClient(); - HttpRequestMessage MakeHttpRequest(HttpMethod m, string endpoint); + HttpRequestMessage MakeHttpRequest(HttpMethod m, string endpoint, bool addToken); Task RefreshClient(HttpRequestMessage client); } @@ -27,7 +27,7 @@ namespace BirdsiteLive.Twitter.Tools private List _twitterClients = new List(); private List _tokens = new List(); static Random rnd = new Random(); - private const int _targetClients = 20; + private const int _targetClients = 3; public String BearerToken { get { return "AAAAAAAAAAAAAAAAAAAAAPYXBAAAAAAACLXUNDekMxqa8h%2F40K4moUkGsoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw"; } } @@ -132,12 +132,13 @@ namespace BirdsiteLive.Twitter.Tools int r = rnd.Next(_twitterClients.Count); return _twitterClients[r]; } - public HttpRequestMessage MakeHttpRequest(HttpMethod m, string endpoint) + public HttpRequestMessage MakeHttpRequest(HttpMethod m, string endpoint, bool addToken) { var request = new HttpRequestMessage(m, endpoint); int r = rnd.Next(_twitterClients.Count); request.Headers.TryAddWithoutValidation("Authorization", $"Bearer " + BearerToken); - request.Headers.TryAddWithoutValidation("x-guest-token", _tokens[r]); + if (addToken) + request.Headers.TryAddWithoutValidation("x-guest-token", _tokens[r]); //request.Headers.TryAddWithoutValidation("Referer", "https://twitter.com/"); //request.Headers.TryAddWithoutValidation("x-twitter-active-user", "yes"); return request; diff --git a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs index 5811c74..88fd585 100644 --- a/src/BirdsiteLive.Twitter/TwitterTweetsService.cs +++ b/src/BirdsiteLive.Twitter/TwitterTweetsService.cs @@ -55,7 +55,7 @@ namespace BirdsiteLive.Twitter "https://api.twitter.com/graphql/XjlydVWHFIDaAUny86oh2g/TweetDetail?variables=%7B%22focalTweetId%22%3A%22" + statusId + "%22,%22with_rux_injections%22%3Atrue,%22includePromotedContent%22%3Afalse,%22withCommunity%22%3Afalse,%22withQuickPromoteEligibilityTweetFields%22%3Afalse,%22withBirdwatchNotes%22%3Afalse,%22withSuperFollowsUserFields%22%3Afalse,%22withDownvotePerspective%22%3Afalse,%22withReactionsMetadata%22%3Afalse,%22withReactionsPerspective%22%3Afalse,%22withSuperFollowsTweetFields%22%3Afalse,%22withVoice%22%3Atrue,%22withV2Timeline%22%3Atrue%7D&features=%7B%22responsive_web_twitter_blue_verified_badge_is_enabled%22%3Atrue,%22responsive_web_graphql_exclude_directive_enabled%22%3Atrue,%22verified_phone_label_enabled%22%3Afalse,%22responsive_web_graphql_timeline_navigation_enabled%22%3Atrue,%22responsive_web_graphql_skip_user_profile_image_extensions_enabled%22%3Afalse,%22tweetypie_unmention_optimization_enabled%22%3Atrue,%22vibe_api_enabled%22%3Atrue,%22responsive_web_edit_tweet_api_enabled%22%3Atrue,%22graphql_is_translatable_rweb_tweet_is_translatable_enabled%22%3Afalse,%22view_counts_everywhere_api_enabled%22%3Atrue,%22longform_notetweets_consumption_enabled%22%3Atrue,%22tweet_awards_web_tipping_enabled%22%3Afalse,%22freedom_of_speech_not_reach_fetch_enabled%22%3Afalse,%22standardized_nudges_misinfo%22%3Atrue,%22tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled%22%3Afalse,%22interactive_text_enabled%22%3Atrue,%22responsive_web_text_conversations_enabled%22%3Afalse,%22longform_notetweets_richtext_consumption_enabled%22%3Afalse,%22responsive_web_enhance_cards_enabled%22%3Atrue%7D"; - using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL); + using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL, true); try { JsonDocument tweet; @@ -104,7 +104,7 @@ namespace BirdsiteLive.Twitter userId + "%22,%22count%22%3A40,%22includePromotedContent%22%3Atrue,%22withCommunity%22%3Atrue,%22withSuperFollowsUserFields%22%3Atrue,%22withDownvotePerspective%22%3Afalse,%22withReactionsMetadata%22%3Afalse,%22withReactionsPerspective%22%3Afalse,%22withSuperFollowsTweetFields%22%3Atrue,%22withVoice%22%3Atrue,%22withV2Timeline%22%3Atrue%7D&features=%7B%22responsive_web_twitter_blue_verified_badge_is_enabled%22%3Atrue,%22responsive_web_graphql_exclude_directive_enabled%22%3Atrue,%22verified_phone_label_enabled%22%3Afalse,%22responsive_web_graphql_timeline_navigation_enabled%22%3Atrue,%22responsive_web_graphql_skip_user_profile_image_extensions_enabled%22%3Afalse,%22tweetypie_unmention_optimization_enabled%22%3Atrue,%22vibe_api_enabled%22%3Atrue,%22responsive_web_edit_tweet_api_enabled%22%3Atrue,%22graphql_is_translatable_rweb_tweet_is_translatable_enabled%22%3Atrue,%22view_counts_everywhere_api_enabled%22%3Atrue,%22longform_notetweets_consumption_enabled%22%3Atrue,%22tweet_awards_web_tipping_enabled%22%3Afalse,%22freedom_of_speech_not_reach_fetch_enabled%22%3Afalse,%22standardized_nudges_misinfo%22%3Atrue,%22tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled%22%3Afalse,%22interactive_text_enabled%22%3Atrue,%22responsive_web_text_conversations_enabled%22%3Afalse,%22longform_notetweets_richtext_consumption_enabled%22%3Afalse,%22responsive_web_enhance_cards_enabled%22%3Afalse%7D"; JsonDocument results; List extractedTweets = new List(); - using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL); + using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), reqURL, false); try { @@ -118,7 +118,7 @@ namespace BirdsiteLive.Twitter catch (HttpRequestException e) { _logger.LogError(e, "Error retrieving timeline of {Username}; refreshing client", username); - await _twitterAuthenticationInitializer.RefreshClient(request); + //await _twitterAuthenticationInitializer.RefreshClient(request); return null; } catch (Exception e) diff --git a/src/BirdsiteLive.Twitter/TwitterUserService.cs b/src/BirdsiteLive.Twitter/TwitterUserService.cs index cdbc708..ea1c3b5 100644 --- a/src/BirdsiteLive.Twitter/TwitterUserService.cs +++ b/src/BirdsiteLive.Twitter/TwitterUserService.cs @@ -40,7 +40,7 @@ namespace BirdsiteLive.Twitter JsonDocument res; var client = await _twitterAuthenticationInitializer.MakeHttpClient(); - using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), endpoint.Replace("elonmusk", username)); + using var request = _twitterAuthenticationInitializer.MakeHttpRequest(new HttpMethod("GET"), endpoint.Replace("elonmusk", username), true); try {