diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e1b7ac8
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ org.example
+ machine-gos-number
+ 1.0-SNAPSHOT
+
+
+ 21
+ 21
+ UTF-8
+
+
+
+
+ org.jsoup
+ jsoup
+ 1.14.3
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.17.2
+
+
+
\ No newline at end of file
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..33bedb9
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,2 @@
+Программа генерирует все буквенные сочетания номера машин в заданном регионе.
+Затем ищет марку машины по заданному номеру на сайте https://avtocod.ru
\ No newline at end of file
diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java
new file mode 100644
index 0000000..2f1e91a
--- /dev/null
+++ b/src/main/java/org/example/Main.java
@@ -0,0 +1,60 @@
+package org.example;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.jsoup.Jsoup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Main {
+ public static void main(String[] args) throws InterruptedException {
+ List numberList = new ArrayList<>();
+ String[] alphavit = {"А", "В", "Е", "К", "М", "Н", "О", "Р", "С", "Т", "У", "Х"};
+
+ for (int indexA = 0; indexA < 12; indexA++) {
+ for (int indexB = 0; indexB < 12; indexB++) {
+ for (int indexC = 0; indexC < 12; indexC++) {
+ String number = String.format("%s910%s%s40", alphavit[indexA], alphavit[indexB], alphavit[indexC]);
+ numberList.add(number);
+ }
+ }
+ }
+ ObjectMapper objectMapper = new ObjectMapper();
+ System.out.println("all: " + numberList.size());
+ for (int i = 1254; i < numberList.size(); i++) {
+ String regNumber = numberList.get(i);
+
+ String model = getMachineModel(objectMapper, regNumber);
+ System.out.printf("%s,%s,%s\n", regNumber, "=ГИПЕРССЫЛКА(\"https://avtocod.ru/proverkaavto/" + regNumber + "\";\"" + regNumber + "\")", model);
+ }
+ }
+
+ private static String getMachineModel(ObjectMapper objectMapper, String regNumber) {
+ String result = "";
+ try {
+ var document = Jsoup.connect("https://avtocod.ru/proverkaavto/" + regNumber).timeout(10000)
+ .followRedirects(true)
+ .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
+ .execute().parse();
+ String dataText = document.getElementById("popMechanicUserData").getAllElements().getFirst().childNodes().getFirst().toString();
+ String json = dataText.replace("window.PopMechanicUserData =", "").replace("};", "}")
+ .replace("\n", "").replace(" ", "").replace(",}", "}")
+ .replace("grz_num", "'grz_num'")
+ .replace("{_num", "{'_num'")
+ .replace("car_mark", "'car_mark'")
+ .replace("car_model", "'car_model'")
+ .replace("car_year", "'car_year'")
+ .replace("grz_region", "'grz_region'")
+ .replace("'", "\"");
+ JsonNode jsonNode = objectMapper.readTree(json);
+ String mark = jsonNode.get("car_mark").asText();
+ String model = jsonNode.get("car_model").asText();
+ String year = jsonNode.get("car_year").asText();
+ result = String.format("%s %s %s г.", mark, model, year);
+ } catch (Exception e) {
+ // обработка ошибок парсинга
+ }
+ return result;
+ }
+}
\ No newline at end of file