您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Get ip adress and some other information about Azar user
// ==UserScript== // @name IP Logger for Azar // @namespace / // @version 1.0 // @description Get ip adress and some other information about Azar user // @author MultiJump (for TamperMonkey integration) and Yannox (for script) // @match https://azarlive.com/* // @icon https://avatars.githubusercontent.com/u/42420419?s=48&v=4 // @grant none // @license GNU GPLv3 // ==/UserScript== (function() { 'use strict'; (function() { // Create and style the container for displaying IP addresses const ipContainer = document.createElement('div'); ipContainer.id = 'ip-container'; ipContainer.style.position = 'fixed'; ipContainer.style.top = '10px'; ipContainer.style.right = '10px'; ipContainer.style.width = '400px'; ipContainer.style.maxHeight = '500px'; ipContainer.style.overflowY = 'auto'; ipContainer.style.backgroundColor = '#f7f9fc'; ipContainer.style.border = '1px solid #ccc'; ipContainer.style.borderRadius = '12px'; ipContainer.style.padding = '20px'; ipContainer.style.zIndex = '10000'; ipContainer.style.fontFamily = 'Arial, sans-serif'; ipContainer.style.fontSize = '14px'; ipContainer.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.1)'; ipContainer.style.color = '#333'; ipContainer.style.resize = 'both'; ipContainer.style.overflow = 'auto'; ipContainer.innerHTML = ` <div id="drag-handle" style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; cursor: move;"> <h3 style="margin: 0; color: #007bff;">Detected IP Addresses</h3> <button id="clear-ip-list" style="padding: 10px 15px; border: none; background-color: #dc3545; color: white; border-radius: 8px; cursor: pointer; transition: background-color 0.3s;">Clear</button> <button id="close-ip-container" style="padding: 10px 15px; border: none; background-color: #dc3545; color: white; border-radius: 8px; cursor: pointer; transition: background-color 0.3s;">X</button> </div> <div id="ip-addresses"></div> <div id="twitter-button" style="margin-top: 10px; text-align: center;"> <a href="https://x.com/euphoncaca" target="_blank" style="display: inline-block; background-color: #1da1f2; color: white; padding: 10px 20px; text-decoration: none; font-weight: bold; border-radius: 8px; transition: background-color 0.3s;">Suivez-moi sur Twitter</a> </div> `; document.body.appendChild(ipContainer); // Add event listener to clear button document.getElementById('clear-ip-list').addEventListener('click', () => { const ipList = document.getElementById('ip-addresses'); ipList.innerHTML = ''; }); // Add event listener to close button document.getElementById('close-ip-container').addEventListener('click', () => { document.body.removeChild(ipContainer); }); // Make the container draggable function makeDraggable(element, handle) { handle = handle || element; let posX = 0, posY = 0, mouseX = 0, mouseY = 0; handle.onmousedown = dragMouseDown; function dragMouseDown(e) { e.preventDefault(); mouseX = e.clientX; mouseY = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e.preventDefault(); posX = mouseX - e.clientX; posY = mouseY - e.clientY; mouseX = e.clientX; mouseY = e.clientY; element.style.top = (element.offsetTop - posY) + "px"; element.style.left = (element.offsetLeft - posX) + "px"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } makeDraggable(ipContainer, document.getElementById('drag-handle')); window.oRTCPeerConnection = window.oRTCPeerConnection || window.RTCPeerConnection; window.RTCPeerConnection = function(...args) { const pc = new window.oRTCPeerConnection(...args); pc.oaddIceCandidate = pc.addIceCandidate; pc.addIceCandidate = function(iceCandidate, ...rest) { const fields = iceCandidate.candidate.split(' '); if (fields[7] === 'srflx') { const ipAddress = fields[4]; const currentTime = new Date().toLocaleTimeString(); console.group('Detected IP Address'); console.log('IP Address:', ipAddress); console.groupEnd(); // Fetch ISP and city information without API key fetch(`https://ipapi.co/${ipAddress}/json/`) .then(response => response.json()) .then(data => { const ispInfo = data.org || 'Unknown ISP'; const cityInfo = data.city || 'Unknown City'; const ipList = document.getElementById('ip-addresses'); const ipItem = document.createElement('div'); ipItem.className = 'ip-item'; ipItem.style.display = 'flex'; ipItem.style.flexDirection = 'column'; ipItem.style.backgroundColor = '#ffffff'; ipItem.style.border = '1px solid #ddd'; ipItem.style.padding = '15px'; ipItem.style.marginBottom = '10px'; ipItem.style.borderRadius = '8px'; ipItem.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.1)'; ipItem.style.transition = 'transform 0.2s, box-shadow 0.2s'; ipItem.style.cursor = 'pointer'; ipItem.onmouseover = function() { ipItem.style.transform = 'scale(1.02)'; ipItem.style.boxShadow = '0 4px 8px rgba(0, 0, 0, 0.15)'; }; ipItem.onmouseout = function() { ipItem.style.transform = 'scale(1)'; ipItem.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.1)'; }; ipItem.innerHTML = ` <span><strong>Time:</strong> ${currentTime}</span> <span><strong>IP Address:</strong> ${ipAddress}</span> <span><strong>ISP:</strong> ${ispInfo}</span> <span><strong>City:</strong> ${cityInfo}</span> <button style="margin-top: 10px; padding: 10px 15px; border: none; background-color: #007bff; color: white; border-radius: 8px; cursor: pointer; transition: background-color 0.3s;">Copy</button> `; ipList.appendChild(ipItem); // Add copy functionality to the button const copyButton = ipItem.querySelector('button'); copyButton.addEventListener('click', () => { navigator.clipboard.writeText(ipAddress).then(() => { copyButton.textContent = 'Copied!'; copyButton.style.backgroundColor = '#28a745'; setTimeout(() => { copyButton.textContent = 'Copy'; copyButton.style.backgroundColor = '#007bff'; }, 2000); }); }); }) .catch(error => console.error('Error fetching ISP and city information:', error)); } return pc.oaddIceCandidate(iceCandidate, ...rest); } return pc; } })(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址