GitHub Auto-Fill Form

try to take over the world!

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name     GitHub Auto-Fill Form
// @version      2024-02-25
// @description  try to take over the world!
// @author       SMNET
// @license MIT
// @grant    GM_xmlhttpRequest
// @match  https://github.com/github-copilot/signup/billing?*
// @match  https://github.com/github-copilot/signup/success
// @match  https://github.com/github-copilot/signup/settings
// @match  https://github.com/join/welcome
// @namespace https://greasyfork.org/users/1218336
// ==/UserScript==

function fillForm3() {
    let summaryElement = document.querySelector('summary[data-view-component="true"]');
    if(summaryElement) {
        summaryElement.click();
        setTimeout(() => {
            let allowedButton = document.querySelector('button[value="allowed"]');
            if(allowedButton) {
                allowedButton.click();
                setTimeout(() => {
                    let saveButton = document.getElementById('copilot_settings_submit');
                    if(saveButton) {
                        saveButton.click();
                    } else {
                        console.error('Could not find the "Save and complete setup" button');
                    }
                }, 100);
            } else {
                console.error('Could not find the "Allowed" button');
            }
        }, 100);
    } else {
        console.error('Could not find the summary element');
    }
}
function fillForm1(data) {
    let firstName = data.address.Full_Name.split(" ")[0];
    let lastName = data.address.Full_Name.split(" ")[1] || firstName;
    document.querySelector('input[name="user_contact_info[first_name]"]').value = firstName;
    document.querySelector('input[name="user_contact_info[last_name]"]').value = lastName;
    let countrySelect1 = document.querySelector('select[name="user_contact_info[country]"]');
    for(let i=0; i<countrySelect1.options.length; i++){
        if(countrySelect1.options[i].innerText === 'United States of America'){
            countrySelect1.value = countrySelect1.options[i].value;
            break;
        }
    }
    let submitButton = document.querySelector('button.btn-primary.btn.width-full.mt-3');
    if(submitButton) {
        submitButton.click();
    } else {
        console.error('Could not find the "Submit" button');
    }
}
function fillForm2(data) {
    let firstName = data.address.Full_Name.split(" ")[0];
    let lastName = data.address.Full_Name.split(" ")[1] || firstName;
    document.querySelector('input[name="account_screening_profile[first_name]"]').value = firstName;
    document.querySelector('input[name="account_screening_profile[last_name]"]').value = lastName;
    document.querySelector('input[name="account_screening_profile[address1]"]').value = data.address.Address;
    document.querySelector('input[name="account_screening_profile[city]"]').value = data.address.City;
    document.querySelector('input[name="account_screening_profile[region]"]').value = data.address.State;
    document.querySelector('input[name="account_screening_profile[postal_code]"]').value = data.address.Zip_Code;
    let countrySelect2 = document.querySelector('select[name="account_screening_profile[country_code]"]');
    for(let i=0; i<countrySelect2.options.length; i++){
        if(countrySelect2.options[i].innerText === 'United States of America'){
            countrySelect2.value = countrySelect2.options[i].value;
            break;
        }
    }
    let checkElement = document.querySelector('h4.mb-3');
    if(checkElement && checkElement.innerText.trim() === 'Payment method') {
        return;
    } else {
        let saveButton = document.querySelector('button[name="submit"][type="submit"]');
        if (saveButton) saveButton.click();
    }
}
window.onload = () => {
    let currentUrl = window.location.href;
    let specificElement = document.querySelector('#copilot_settings_telemetry');


    if (currentUrl === "https://github.com/github-copilot/signup/settings") {
        window.location.href = "https://cocopilot.org/copilot/token";
    }
    else if (currentUrl === "https://github.com/join/welcome") {
        window.location.href = "https://github.com/github-copilot/signup/billing?payment_duration=monthly";
    }
    else if (specificElement) {
        return fillForm3();
    } else {
        GM_xmlhttpRequest({
            method: 'POST',
            url: 'https://www.meiguodizhi.com/api/v1/dz',
            headers: {
                'Content-Type': 'application/json',
            },
            data: JSON.stringify({
                "city": "",
                "path": "/",
                "method": "refresh"
            }),
            onload: (response) => {
                var data = JSON.parse(response.responseText);
                specificElement = document.querySelector('input[name="user_contact_info[first_name]"]');
                if (specificElement) {
                    fillForm1(data);
                } else {
                    fillForm2(data);
                }
            },
            onerror: (error) => {
                console.error('Error during request:', error);
            }
        });
    }
};