您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto login for Webtoon.xyz with userscript settings
- // ==UserScript==
- // @name Webtoon.xyz+
- // @namespace github.com/longkidkoolstar
- // @version 0.1
- // @description Auto login for Webtoon.xyz with userscript settings
- // @author longkidkoolstar
- // @homepage github.com/longkidkoolstar
- // @icon https://www.google.com/s2/favicons?sz=64&domain=webtoon.xyz
- // @license MIT
- // @match https://www.webtoon.xyz/*
- // @grant GM.getValue
- // @grant GM.setValue
- // ==/UserScript==
- (async function() {
- console.log("User-Script Started");
- // Check if on the user settings page
- if (window.location.href.startsWith("https://www.webtoon.xyz/user-settings/")) {
- const navTabsWrap = document.querySelector(".nav-tabs-wrap ul.nav-tabs");
- const contentArea = document.querySelector("#post-7 > div.entry-content > div > div > div.col-md-9.col-sm-9");
- if (navTabsWrap && contentArea) {
- // Create Userscript Settings tab
- const settingsTab = document.createElement("li");
- settingsTab.innerHTML = `
- <a href="#" id="userscript-settings-tab"><i class="icon ion-md-settings"></i>Userscript Settings</a>
- `;
- navTabsWrap.appendChild(settingsTab);
- // Create Userscript Settings content section
- const settingsContent = document.createElement("div");
- settingsContent.id = "userscript-settings-content";
- settingsContent.innerHTML = `
- <h2 style="font-size: 24px; color: #333;">Webtoon.xyz+ Settings</h2>
- <div style="background: #f9f9f9; padding: 20px; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); max-width: 400px; margin: 20px auto;">
- <label style="font-size: 16px; color: #333; margin-bottom: 8px; display: block;">
- <input type="checkbox" id="enable-auto-login" style="margin-right: 10px;">
- Enable Auto Login
- </label><br><br>
- <label for="username-input" style="font-size: 14px; color: #555;">Username or Email:</label>
- <input type="text" id="username-input" placeholder="Enter Username or Email" style="width: 100%; padding: 10px; margin: 5px 0; border-radius: 6px; border: 1px solid #ccc; font-size: 14px;"><br><br>
- <label for="password-input" style="font-size: 14px; color: #555;">Password:</label>
- <input type="password" id="password-input" placeholder="Enter Password" style="width: 100%; padding: 10px; margin: 5px 0; border-radius: 6px; border: 1px solid #ccc; font-size: 14px;"><br><br>
- <button id="save-credentials" style="background-color: #4CAF50; color: white; padding: 10px 15px; border: none; border-radius: 6px; cursor: pointer; font-size: 16px; width: 100%; transition: all 0.3s ease;">
- Save Credentials
- </button>
- </div>
- `;
- settingsContent.style.display = "none";
- // Add the settings content to the main content area
- contentArea.appendChild(settingsContent);
- // Add hover and click effects using CSS
- const saveButton = document.getElementById("save-credentials");
- // Hover effect: change background color and scale the button slightly
- saveButton.addEventListener("mouseover", () => {
- saveButton.style.backgroundColor = "#45a049";
- saveButton.style.transform = "scale(1.05)";
- });
- // Revert the hover effect when mouse leaves
- saveButton.addEventListener("mouseout", () => {
- saveButton.style.backgroundColor = "#4CAF50";
- saveButton.style.transform = "scale(1)";
- });
- // Click effect: add a slight "pressed" effect and change to red temporarily
- saveButton.addEventListener("mousedown", () => {
- saveButton.style.backgroundColor = "red"; // Change to red during click
- saveButton.style.transform = "scale(0.98)";
- });
- // Revert the click effect after a short delay
- saveButton.addEventListener("mouseup", () => {
- setTimeout(() => {
- saveButton.style.backgroundColor = "#4CAF50"; // Change back to green after the click
- }, 150); // Wait for 150ms before returning to green
- saveButton.style.transform = "scale(1)";
- });
- // Event listener for Userscript Settings tab click
- document.getElementById("userscript-settings-tab").addEventListener("click", (e) => {
- e.preventDefault();
- // Clear any existing active classes from tabs
- navTabsWrap.querySelectorAll("li").forEach(tab => tab.classList.remove("active"));
- // Set the clicked tab to active
- settingsTab.classList.add("active");
- // Hide other content and show settings content
- contentArea.innerHTML = ''; // Clear existing content
- contentArea.appendChild(settingsContent); // Display settings
- settingsContent.style.display = "block";
- });
- // Load and apply existing settings
- const autoLoginEnabled = await GM.getValue("autoLoginEnabled", true);
- document.getElementById("enable-auto-login").checked = autoLoginEnabled;
- const savedUsername = await GM.getValue("username", "");
- const savedPassword = await GM.getValue("password", "");
- document.getElementById("username-input").value = savedUsername;
- document.getElementById("password-input").value = savedPassword;
- // Toggle auto-login setting
- document.getElementById("enable-auto-login").addEventListener("change", async (e) => {
- await GM.setValue("autoLoginEnabled", e.target.checked);
- //alert(`Auto-login ${e.target.checked ? "enabled" : "disabled"}`);
- });
- // Save credentials when the "Save Credentials" button is clicked
- document.getElementById("save-credentials").addEventListener("click", async () => {
- const username = document.getElementById("username-input").value;
- const password = document.getElementById("password-input").value;
- if (username && password) {
- await GM.setValue("username", username);
- await GM.setValue("password", password);
- alert("Credentials saved successfully!");
- } else {
- alert("Please enter both username and password.");
- }
- });
- }
- }
- // Auto-login logic
- const autoLoginEnabled = await GM.getValue("autoLoginEnabled", true);
- if (autoLoginEnabled) {
- let username = await GM.getValue("username", null);
- let password = await GM.getValue("password", null);
- if (!username || !password) {
- console.log("Username or password not provided. Exiting script.");
- return;
- }
- const signInButton = document.querySelector('a[data-toggle="modal"][data-target="#form-login"].btn-active-modal');
- if (signInButton) {
- signInButton.click();
- console.log("Clicked Sign In button");
- const formCheckInterval = setInterval(() => {
- const loginForm = document.querySelector('form#loginform');
- if (loginForm) {
- clearInterval(formCheckInterval);
- loginForm.querySelector('input[name="log"]').value = username;
- loginForm.querySelector('input[name="pwd"]').value = password;
- loginForm.querySelector('input[name="rememberme"]').checked = true;
- loginForm.querySelector('input[type="submit"]').click();
- console.log("Form submitted with user credentials");
- }
- }, 500);
- } else {
- console.log("Sign In button not found");
- }
- }
- })();