Tantalis 13
Başarılı
- Katılım
- 16 Mayıs 2024
- Mesajlar
- 54
- Beğeniler
- 39
Bu kod ne kadar kullanıcıya hitap eder bilmiyorum ama modemde sinir olduğum bir durumdu elle yazmak. Zyxel EX3501-T1 modemde denedim ve sorun çözüldü. Normalde güvenlik amaçlı modemde tarayıcıdan otomatik id ve şifre girme olmuyormuş. Ancak aşağıdaki yöntemle bir makro gibi çalışmasını sağlayarak otomatik giriş yapabilirsiniz modem arayüzüne.
İlk olarak aşağıdaki eklentiyi tarayıcıya kurmamız gerekiyor:
chromewebstore.google.com
Daha sonra da aşağıdaki kodu eklenti ayarlarından Create script > Create user script diyerek yapıştırıp kaydedebilirsiniz:
Not: "Koddaki kullanıcı adı" ve "şifreniz" alanlarını kendinize göre düzenleyiniz.
İlk olarak aşağıdaki eklentiyi tarayıcıya kurmamız gerekiyor:
Ace Script - Chrome Web Mağazası
Everything can be scripted, allowing your browser to do more!
Daha sonra da aşağıdaki kodu eklenti ayarlarından Create script > Create user script diyerek yapıştırıp kaydedebilirsiniz:
Not: "Koddaki kullanıcı adı" ve "şifreniz" alanlarını kendinize göre düzenleyiniz.
Kod:
// ==UserScript==
// @name Zyxel Oto Giriş
// @namespace Deneme
// @version 1.1
// @description Zyxel arayüzüne klavyeden yazıyormuş gibi giriş yapar ve Giriş Yap'a basar.
// @match http://192.168.1.1/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
const USERNAME = "kullanıcıadı"; // Buraya kullanıcı adını yaz
const PASSWORD = "şifreniz"; // Buraya şifreni yaz
// JavaScript framework'ünün inputları DOM'a basmasını bekle
function waitForElement(selector, callback) {
const interval = setInterval(() => {
const el = document.querySelector(selector);
if (el && el.offsetParent !== null) { // Elementin görünür olduğundan emin ol
clearInterval(interval);
callback(el);
}
}, 500);
}
// İnsan gibi harf harf yazma simülasyonu
function simulateHumanTyping(element, text, callback) {
element.focus();
let i = 0;
const typingInterval = setInterval(() => {
// Değeri harf harf artır
element.value = text.substring(0, i + 1);
// Vue/React gibi frameworklerin değişikliği algılaması için "input" ve "change" eventlerini fırlat
element.dispatchEvent(new Event('input', { bubbles: true }));
element.dispatchEvent(new Event('change', { bubbles: true }));
i++;
if (i >= text.length) {
clearInterval(typingInterval);
element.blur();
if(callback) setTimeout(callback, 300); // Yazma bitince 300ms bekle (insani gecikme)
}
}, 80); // Her harf arası 80ms bekle
}
// Giriş butonuna basma işlemi
function clickLoginButton() {
// Sayfadaki tüm span elementlerini tarayıp "Giriş Yap" yazanı buluyoruz
const spans = document.querySelectorAll('span');
let loginSpan = null;
for (let span of spans) {
if (span.textContent.trim() === 'Giriş Yap') {
loginSpan = span;
break;
}
}
if (loginSpan) {
// Tıklamayı hem span'a hem de en yakın tıklanabilir kapsayıcıya gönderiyoruz
const clickableElement = loginSpan.closest('button') || loginSpan.closest('a') || loginSpan;
clickableElement.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, cancelable: true }));
clickableElement.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, cancelable: true }));
clickableElement.click();
} else {
console.log("Giriş Yap yazan span bulunamadı.");
}
}
window.addEventListener('load', () => {
// DOM sonradan yükleniyor, şifre alanını bekliyoruz
waitForElement('input[type="password"]', (passwordInput) => {
// Kullanıcı adı alanını bul
const usernameInput = document.querySelector('input[type="text"]') || document.querySelector('input[name="username"]');
if (usernameInput && usernameInput.value !== USERNAME) {
// Önce kullanıcı adını yaz, sonra şifreyi yaz, sonra tıkla
simulateHumanTyping(usernameInput, USERNAME, () => {
simulateHumanTyping(passwordInput, PASSWORD, clickLoginButton);
});
} else {
// Sadece şifre alanı varsa
simulateHumanTyping(passwordInput, PASSWORD, clickLoginButton);
}
});
});
})();
Son düzenleyen: Moderatör: