MissAV Аутоматско пријављивање

Детецтион MissAV држава,и аутоматски се пријављује када нисте пријављени

As of 08/09/2024. See the latest version.

  1. // ==UserScript==
  2. // @name MissAV Automatic login
  3. // @name:zh-CN MissAV 自动登录
  4. // @description:zh-CN 检测 MissAV 状态,并且在未登录时自动登录
  5. // @name:ar MissAV تسجيل الدخول التلقائي
  6. // @description:ar كشف MissAV ولاية,وتسجيل الدخول تلقائيًا في حالة عدم تسجيل الدخول
  7. // @name:bg MissAV Автоматично влизане
  8. // @description:bg Откриване MissAV състояние,и автоматично влизане, когато не сте влезли
  9. // @name:cs MissAV Automatické přihlášení
  10. // @description:cs Detekce MissAV stát,a automaticky se přihlásit, když nejste přihlášeni
  11. // @name:da MissAV Automatisk login
  12. // @description:da Opdagelse MissAV tilstand,og logger automatisk på, når du ikke er logget ind
  13. // @name:de MissAV Automatische Anmeldung
  14. // @description:de Erkennung MissAV Zustand,und melden Sie sich automatisch an, wenn Sie nicht angemeldet sind
  15. // @name:el MissAV Αυτόματη σύνδεση
  16. // @description:el Ανίχνευση MissAV κατάσταση,και αυτόματα συνδέεστε όταν δεν είστε συνδεδεμένοι
  17. // @name:en MissAV Automatic login
  18. // @description:en Detection MissAV state,and automatically log in when not logged in
  19. // @name:eo MissAV Aŭtomata ensaluto
  20. // @description:eo Detekto MissAV stato,kaj aŭtomate ensalutu kiam ne ensalutinta
  21. // @name:es MissAV Inicio de sesión automático
  22. // @description:es Detección MissAV estado,e iniciar sesión automáticamente cuando no haya iniciado sesión
  23. // @name:fi MissAV Automaattinen sisäänkirjautuminen
  24. // @description:fi Havaitseminen MissAV osavaltio,ja kirjaudu sisään automaattisesti, kun et ole kirjautunut sisään
  25. // @name:fr MissAV Connexion automatique
  26. // @description:fr Détection MissAV État,et connectez-vous automatiquement lorsque vous n’êtes pas connecté
  27. // @name:he MissAV כניסה אוטומטית
  28. // @description:he איתור MissAV מְדִינָה,והתחבר אוטומטית כאשר לא מחובר
  29. // @name:hr MissAV Automatska prijava
  30. // @description:hr Otkrivanje MissAV stanje,i automatski se prijavite kada niste prijavljeni
  31. // @name:hu MissAV Automatikus bejelentkezés
  32. // @description:hu Érzékelés MissAV állami,és automatikusan bejelentkezik, ha nincs bejelentkezve
  33. // @name:id MissAV Masuk otomatis
  34. // @description:id Deteksi MissAV negara,dan secara otomatis login ketika tidak login
  35. // @name:it MissAV Accesso automatico
  36. // @description:it Rilevamento MissAV stato,e accedi automaticamente quando non sei loggato
  37. // @name:ja MissAV 自動ログイン
  38. // @description:ja 検出 MissAV 州,ログインしていない場合は自動的にログインします
  39. // @name:ka MissAV ავტომატური შესვლა
  40. // @description:ka გამოვლენა MissAV სახელმწიფო,და ავტომატურად შედით სისტემაში, როდესაც არ ხართ შესული
  41. // @name:ko MissAV 자동 로그인
  42. // @description:ko 발각 MissAV 상태,로그인하지 않으면 자동으로 로그인됩니다.
  43. // @name:nl MissAV Automatisch inloggen
  44. // @description:nl Detectie MissAV staat,en automatisch inloggen als je niet ingelogd bent
  45. // @name:nb MissAV Automatisk pålogging
  46. // @description:nb Oppdagelse MissAV tilstand,og logger automatisk på når du ikke er pålogget
  47. // @name:pl MissAV Automatyczne logowanie
  48. // @description:pl Wykrywanie MissAV państwo,i automatycznie loguj się, gdy nie jesteś zalogowany
  49. // @name:pt-BR MissAV Login automático
  50. // @description:pt-BR Detecção MissAV estado,e faça login automaticamente quando não estiver conectado
  51. // @name:ro MissAV Conectare automată
  52. // @description:ro Detectare MissAV stat,și conectați-vă automat când nu sunteți autentificat
  53. // @name:ru MissAV Автоматический вход
  54. // @description:ru Обнаружение MissAV состояние,и автоматически входить в систему, когда вы не вошли в систему
  55. // @name:sk MissAV Automatické prihlásenie
  56. // @description:sk Detekcia MissAV štátu,a automaticky sa prihlásiť, keď nie ste prihlásení
  57. // @name:sr MissAV Аутоматско пријављивање
  58. // @description:sr Детецтион MissAV држава,и аутоматски се пријављује када нисте пријављени
  59. // @name:sv MissAV Automatisk inloggning
  60. // @description:sv Upptäckt MissAV ange,och logga in automatiskt när du inte är inloggad
  61. // @name:th MissAV เข้าสู่ระบบอัตโนมัติ
  62. // @description:th การตรวจจับ MissAV สถานะ,และเข้าสู่ระบบอัตโนมัติเมื่อไม่ได้เข้าสู่ระบบ
  63. // @name:tr MissAV Otomatik giriş
  64. // @description:tr Algılama MissAV durum,ve oturum açmadığınızda otomatik olarak oturum açın
  65. // @name:ug MissAV ئاپتوماتىك كىرىش
  66. // @description:ug بايقاش MissAV ئىشتات,ھەمدە كىرمىگەندە ئاپتوماتىك كىرىدۇ
  67. // @name:uk MissAV Автоматичний вхід
  68. // @description:uk виявлення MissAV стан,і автоматично ввійти, якщо ви не ввійшли
  69. // @name:vi MissAV Đăng nhập tự động
  70. // @description:vi Phát hiện MissAV tình trạng,và tự động đăng nhập khi chưa đăng nhập
  71. // @name:zh-TW MissAV 自動登入
  72. // @description:zh-TW 偵測 MissAV 狀態,並且在未登入時自動登入
  73. // @name:zh-HK MissAV 自動登入
  74. // @description:zh-HK 偵測 MissAV 狀態,並且在未登入時自動登入
  75. // @name:fr-CA MissAV Connexion automatique
  76. // @description:fr-CA Détection MissAV État,et connectez-vous automatiquement lorsque vous n’êtes pas connecté
  77. // @description Detection MissAV state,and automatically log in when not logged in
  78. // @namespace https://github.com/ChinaGodMan/UserScripts
  79. // @author 人民的勤务员 <toniaiwanowskiskr47@gmail.com>
  80. // @match https://missav.com/*
  81. // @grant GM_registerMenuCommand
  82. // @grant GM_setValue
  83. // @grant GM_getValue
  84. // @version 1.0.1.3
  85. // @require https://update.greasyfork.org/scripts/498897/1404834/Toastnew.js
  86. // @icon https://pic.616pic.com/ys_bnew_img/00/35/79/Gv93yQh7v6.jpg
  87. // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
  88. // @homepageURL https://github.com/ChinaGodMan/UserScripts
  89. // @license MIT
  90. // ==/UserScript==
  91.  
  92. const translate = (function () {
  93. const userLang = (navigator.languages && navigator.languages[0]) || navigator.language || 'en'
  94. const strings = {
  95. 'en': {
  96. Accountnull: 'Error: UserEmail or UserPassword is empty.',
  97. loginSuccess: 'Login successful, refreshing the page.',
  98. Networkfailed: 'Status code error.',
  99. Loginfailed: 'Login failed, incorrect email or password. Check console for error details.',
  100. },
  101. 'zh-CN': {
  102. Accountnull: '邮箱或密码为空',
  103. loginSuccess: '登录成功,即将刷新页面。',
  104. Networkfailed: '状态码错误',
  105. Loginfailed: '登录失败,邮箱或密码错误,可以在控制台查看错误信息。',
  106. },
  107. 'zh-TW': {
  108. Accountnull: '郵箱或密碼為空',
  109. loginSuccess: '登錄成功,即將刷新頁面。',
  110. Networkfailed: '狀態碼錯誤',
  111. Loginfailed: '登錄失敗,郵箱或密碼錯誤,可以在控制台查看錯誤信息。',
  112. },
  113. 'ja': {
  114. Accountnull: 'エラー:メールアドレスまたはパスワードが空です。',
  115. loginSuccess: 'ログイン成功、ページを更新します。',
  116. Networkfailed: 'ステータスコードエラー',
  117. Loginfailed: 'ログインに失敗しました。メールアドレスまたはパスワードが間違っています。エラーの詳細はコンソールで確認できます。',
  118. },
  119. 'vi': {
  120. Accountnull: 'Lỗi: Email hoặc mật khẩu trống.',
  121. loginSuccess: 'Đăng nhập thành công, đang làm mới trang.',
  122. Networkfailed: 'Lỗi mã trạng thái.',
  123. Loginfailed: 'Đăng nhập không thành công, email hoặc mật khẩu không chính xác. Xem chi tiết lỗi trên bảng điều khiển.',
  124. }
  125. }
  126.  
  127. return (id, lang = '') => {
  128. const selectedLang = lang || userLang
  129. return (strings[selectedLang] || strings.en)[id] || strings.en[id]
  130. }
  131. }());
  132. (function () {
  133. 'use strict'
  134. let UserEmail = GM_getValue("UserEmail", "")
  135. let UserPassword = GM_getValue("UserPassword", "")
  136. var style = document.createElement('style')
  137. GM_registerMenuCommand("Set Account", showuserInfoModal)
  138. function showuserInfoModal() {
  139. let modalHtml = `
  140. <div id="userInfoModal" style="position: fixed; z-index: 10000; background: white; padding: 20px; border-radius: 8px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); top: 20%; left: 50%; transform: translate(-50%, -20%); max-width: 300px;">
  141. <h2 style="margin-top: 0;">Set Account </h2>
  142. <div style="margin-bottom: 10px;">
  143. <label for="UserEmail" style="display: block; margin-bottom: 5px;">UserEmail:</label>
  144. <input id="UserEmail" style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px;" value="${UserEmail}" />
  145. </div>
  146. <div style="margin-bottom: 20px;">
  147. <label for="UserPassword" style="display: block; margin-bottom: 5px;">UserPassword:</label>
  148. <input id="UserPassword" style="width: 100%; padding: 8px; border: 1px solid #ccc; border-radius: 4px;" value="${UserPassword}" />
  149. </div>
  150. <div style="text-align: right;">
  151. <button id="saveUserInfo" style="background-color: #4CAF50; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer;">Save</button>
  152. <button id="closeUserModal" style="background-color: #f44336; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; margin-left: 10px;">Close</button>
  153. </div>
  154. </div>`
  155. let modalDiv = document.createElement('div')
  156. modalDiv.innerHTML = modalHtml
  157. document.body.appendChild(modalDiv)
  158. document.getElementById("saveUserInfo").addEventListener("click", function () {
  159. UserEmail = document.getElementById("UserEmail").value
  160. UserPassword = document.getElementById("UserPassword").value
  161. GM_setValue("UserEmail", UserEmail)
  162. GM_setValue("UserPassword", UserPassword)
  163. closeUserModal()
  164. })
  165. document.getElementById("closeUserModal").addEventListener("click", closeUserModal)
  166. }
  167. function closeUserModal() {
  168. let modal = document.getElementById("userInfoModal")
  169. if (modal) {
  170. modal.remove()
  171. }
  172. }
  173. function login(email, password) {
  174. if (!email || !password) {
  175. Toast(translate('Accountnull'), 2000, '#FF0000', '#ffffff', 'top')
  176. return
  177. }
  178. fetch('https://missav.com/cn/api/login', {
  179. method: 'POST',
  180. headers: {
  181. 'Content-Type': 'application/json',
  182. },
  183. body: JSON.stringify({
  184. email: email,
  185. password: password,
  186. remember: true,
  187. }),
  188. })
  189. .then(response => {
  190. if (!response.ok) {
  191. return response.text().then(text => {
  192. console.error('Login error:', {
  193. status: response.status,
  194. statusText: response.statusText,
  195. responseText: text,
  196. })
  197. Toast('Login failed: ' + text, 2000, '#FF0000', '#ffffff', 'top')
  198. throw new Error(translate('Networkfailed'))
  199. })
  200. }
  201. if (response.headers.get('Content-Type')?.includes('application/json')) {
  202. return response.json()
  203. } else {
  204. return response.text().then(text => {
  205. console.error(translate('Loginfailed'), {
  206. status: response.status,
  207. statusText: response.statusText,
  208. responseText: text,
  209. })
  210. Toast(translate('Loginfailed'), 2000, '#FF0000', '#ffffff', 'top')
  211. throw new Error(translate('Loginfailed'))
  212. })
  213. }
  214. })
  215. .then(data => {
  216. console.log('Success:', data)
  217. Toast(translate('loginSuccess'), 2000, 'rgb(18, 187, 2)', '#ffffff', 'top')
  218. location.reload()
  219. })
  220. .catch(error => {
  221. Toast('An error occurred: ' + error.message, 2000, '#FF0000', '#ffffff', 'top')
  222. })
  223. }
  224. function check() {
  225. const url = 'https://missav.com/api/actresses/1016525/view'
  226. fetch(url, {
  227. method: 'GET'
  228. })
  229. .then(response => {
  230. if (response.ok) {
  231. return response.json()
  232. } else {
  233. throw new Error('Network response was not ok.')
  234. }
  235. })
  236. .then(data => {
  237. if (data) {
  238. if (data.user === null) {
  239. login(UserEmail, UserPassword)
  240. } else {
  241. // 已经登录
  242. }
  243. }
  244. })
  245. .catch(error => console.error('Error:', error))
  246. }
  247. check()
  248. })()