doTask.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import messageCenter from '@/uilts/messageCenter/content';
  2. import { getCookie, isMobileTwitter } from '@/uilts/help'
  3. import axios from 'axios';
  4. const TwitterApiCreateTweet = ({ info, data }) => {
  5. let params = {
  6. queryId: "hC1nuE-2d1NX5LYBuuAvtQ",
  7. features: {
  8. "dont_mention_me_view_api_enabled": true,
  9. "interactive_text_enabled": true,
  10. "responsive_web_uc_gql_enabled": false,
  11. "vibe_api_enabled": true,
  12. "responsive_web_edit_tweet_api_enabled": false,
  13. "standardized_nudges_misinfo": true,
  14. "responsive_web_enhance_cards_enabled": false
  15. },
  16. variables: {
  17. "tweet_text": data.txt,
  18. "media": {
  19. "media_entities": [],
  20. "possibly_sensitive": false
  21. },
  22. "withDownvotePerspective": true,
  23. "withReactionsMetadata": false,
  24. "withReactionsPerspective": false,
  25. "withSuperFollowsTweetFields": true,
  26. "withSuperFollowsUserFields": true,
  27. "semantic_annotation_ids": [],
  28. "dark_request": false
  29. }
  30. };
  31. let url = isMobileTwitter() ? "https://mobile.twitter.com/i/api/graphql/K9It0MijE2UOlX-8wLyPYA/CreateTweet" : "https://twitter.com/i/api/graphql/hC1nuE-2d1NX5LYBuuAvtQ/CreateTweet"
  32. axios.post(url,
  33. params, {
  34. headers: {
  35. "accept": "*/*",
  36. "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
  37. "authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
  38. "content-type": "application/json",
  39. "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"101\", \"Google Chrome\";v=\"101\"",
  40. "sec-ch-ua-mobile": "?0",
  41. "sec-ch-ua-platform": "\"Windows\"",
  42. "sec-fetch-dest": "empty",
  43. "sec-fetch-mode": "cors",
  44. "sec-fetch-site": "same-origin",
  45. "x-csrf-token": getCookie('ct0'),
  46. "x-twitter-active-user": "yes",
  47. "x-twitter-auth-type": "OAuth2Session",
  48. "x-twitter-client-language": "en"
  49. },
  50. }).then(function (response) {
  51. messageCenter.send({ info, data: response })
  52. }).catch(function (err) {
  53. messageCenter.send({ info, data: err })
  54. });
  55. }
  56. const TwitterLikeAPI = ({ info, data }) => {
  57. let url = isMobileTwitter() ? "https://mobile.twitter.com/i/api/graphql/lI07N6Otwv1PhnEgXILM7A/FavoriteTweet" : "https://twitter.com/i/api/graphql/lI07N6Otwv1PhnEgXILM7A/FavoriteTweet"
  58. fetch(url, {
  59. "headers": {
  60. "accept": "*/*",
  61. "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
  62. "authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
  63. "content-type": "application/json",
  64. "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"101\", \"Google Chrome\";v=\"101\"",
  65. "sec-ch-ua-mobile": "?0",
  66. "sec-ch-ua-platform": "\"Windows\"",
  67. "sec-fetch-dest": "empty",
  68. "sec-fetch-mode": "cors",
  69. "sec-fetch-site": "same-origin",
  70. "x-csrf-token": getCookie('ct0'),
  71. "x-twitter-active-user": "yes",
  72. "x-twitter-auth-type": "OAuth2Session",
  73. "x-twitter-client-language": "en"
  74. },
  75. "referrer": "https://twitter.com/home",
  76. "referrerPolicy": "strict-origin-when-cross-origin",
  77. "body": "{\"variables\":{\"tweet_id\":\"" + data.tweetId + "\"},\"queryId\":\"lI07N6Otwv1PhnEgXILM7A\"}",
  78. "method": "POST",
  79. "mode": "cors",
  80. "credentials": "include"
  81. }).then(() => {
  82. // 返回信息
  83. messageCenter.send({ info, data: { task_done: true } })
  84. }).catch(() => {
  85. messageCenter.send({ info, data: { task_done: false } })
  86. })
  87. }
  88. const TwitterFollowAPI = ({ info, data }) => {
  89. let url = isMobileTwitter() ? "https://mobile.twitter.com/i/api/1.1/friendships/create.json" : "https://twitter.com/i/api/1.1/friendships/create.json"
  90. fetch(url, {
  91. "headers": {
  92. "authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
  93. "content-type": "application/x-www-form-urlencoded",
  94. "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Google Chrome\";v=\"102\"",
  95. "sec-ch-ua-mobile": "?0",
  96. "sec-ch-ua-platform": "\"macOS\"",
  97. "x-csrf-token": getCookie('ct0'),
  98. "x-twitter-active-user": "yes",
  99. "x-twitter-auth-type": "OAuth2Session",
  100. "x-twitter-client-language": "zh-cn"
  101. },
  102. "referrer": "https://twitter.com/home",
  103. "referrerPolicy": "strict-origin-when-cross-origin",
  104. "body": "include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&include_can_media_tag=1&include_ext_has_nft_avatar=1&skip_status=1&user_id=" + data.twitterUserId + "",
  105. "method": "POST",
  106. "mode": "cors",
  107. "credentials": "include"
  108. }).then(() => {
  109. messageCenter.send({ info, data: { task_done: true, follow_name: data.follow_name } })
  110. }).catch(() => {
  111. messageCenter.send({ info, data: { task_done: false, follow_name: data.follow_name } })
  112. })
  113. }
  114. const TwitterRetweetAPI = ({ info, data }) => {
  115. let url = isMobileTwitter() ? "https://mobile.twitter.com/i/api/graphql/ojPdsZsimiJrUGLR1sjUtA/CreateRetweet" : "https://twitter.com/i/api/graphql/ojPdsZsimiJrUGLR1sjUtA/CreateRetweet"
  116. fetch(url, {
  117. "headers": {
  118. "accept": "*/*",
  119. "accept-language": "zh,en;q=0.9,zh-CN;q=0.8",
  120. "authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
  121. "content-type": "application/json",
  122. "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Google Chrome\";v=\"102\"",
  123. "sec-ch-ua-mobile": "?0",
  124. "sec-ch-ua-platform": "\"macOS\"",
  125. "sec-fetch-dest": "empty",
  126. "sec-fetch-mode": "cors",
  127. "sec-fetch-site": "same-origin",
  128. "x-csrf-token": getCookie('ct0'),
  129. "x-twitter-active-user": "yes",
  130. "x-twitter-auth-type": "OAuth2Session",
  131. "x-twitter-client-language": "zh-cn"
  132. },
  133. "referrer": "https://twitter.com/home",
  134. "referrerPolicy": "strict-origin-when-cross-origin",
  135. "body": "{\"variables\":{\"tweet_id\":\"" + data.tweetId + "\",\"dark_request\":false},\"queryId\":\"ojPdsZsimiJrUGLR1sjUtA\"}",
  136. "method": "POST",
  137. "mode": "cors",
  138. "credentials": "include"
  139. }).then(() => {
  140. messageCenter.send({ info, data: { task_done: true } })
  141. }).catch(() => {
  142. messageCenter.send({ info, data: { task_done: false } })
  143. })
  144. }
  145. export default {
  146. TwitterApiCreateTweet,
  147. TwitterLikeAPI,
  148. TwitterRetweetAPI,
  149. TwitterFollowAPI
  150. }