Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   запрос к стороннему сайту (https://javascript.ru/forum/node-js-io-js/63198-zapros-k-storonnemu-sajjtu.html)

m1fs1 23.05.2016 11:33

запрос к стороннему сайту
 
Стоит задача такая: задача автоматизации проверки штрафов для целого парка автомобилей предприятия. На официальном сайте gibdd.ru есть api, но там информация только об отделениях ГИБДД (если правильно понял). Получение же инфы через их сервис http://www.gibdd.ru/check/fines/ с вводом капчи слишком трудоемкий процесс для оператора. Есть сторонние сайты без ввода капчи, например, http://pddmaster.ru/shtrafi/shtrafy-...os-nomeru.html. Есть мысль скормить список авто с СТС в цикле в виде get-запроса и получить/не получить результат.
Поскольку сам новичок в этом деле, попробовал сделать простую веб-страницу с XMLHttpRequest, запускаемую локально, естественно, ничего не получилось, т.к. кросс-доменный запрос запрещен по-умолчанию в браузерах (который можно включить https://developer.mozilla.org/en-US/...s_control_CORS, в хроме есть даже плагин). Дальнейшие копания ни к чему не привели. Подумав и почитав, решил реализовать на ноде.
Вот код:
var request = require('request');
var fs = require("fs");
 
// Set the headers
var headers = {
    'User-Agent':       'Super Agent/0.0.1',
    'Content-Type':     'application/x-www-form-urlencoded'
}
 
// Configure the request
var options = {
    url: 'http://pddmaster.ru/shtrafi/shtrafy-gibdd-po-gos-nomeru.html',
    method: 'GET',
    timeout: 10000,
    headers: headers,
    qs: {'sts': '77МХ******', 'format': 'plain'}
}
 
// Start the request
request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        // Print out the response body
        console.log(body);
        fs.writeFile('pdd.htm', body);
    }
})

Смотрю записанный файл, там есть такие строки: «Загрузка системы поиска штрафов» «Идет поиск штрафов! процесс может занять несколько минут»

Когда вручную вбиваю номер СТС, выдается именно эти строки - первая при загрузке страницы, вторая после нажатия кнопки «Искать!». В ответ получим (в случае отсутствия штрафов): «Поздравляем! В Государственной информационной системе по Вашим данным не нашлось ни одного штрафа.»

Это сообщения в созданном файле нет. Возможно, что таймаут не срабатывает или другое?

В чем ошибки? В правильном ли направлении иду? И вообще, возможны ли подобные запросы на такие сайты?

Max Power 23.05.2016 12:51

Делать надо однозначно на стороне сервера, да.

Вот список возможных направлений:
1) В данный момент сайт gibdd.ru фактически лежит, возможно проблема в этом
2) Есть платные сервисы автоматического распознавания капчи
3) User-agent - эмуляция запроса из браузера
4) Phantomjs - полная эмуляция браузера с JS
5) Таймауты между запросами чтобы не банили
6) Прокси для обхода возможного бана.

В целом если нет api - такие задачи решаются сложно и с кучей головной боли.

Max Power 23.05.2016 12:54

Еще - на https://www.gibdd.ru/api/ информация о том что сервис в стадии разработки. Если есть api - должен быть саппорт, там можно узнать когда планируется реализация интересующего функционала, может быть просто проще будет дождаться его.

Rise 23.05.2016 13:03

Цитата:

Сообщение от m1fs1 (Сообщение 417360)
ничего не получилось, т.к. кросс-доменный запрос запрещен по-умолчанию в браузерах (который можно включить https://developer.mozilla.org/en-US/...s_control_CORS, в хроме есть даже плагин).

Где в Firefox включить не подскажешь, а то по твоей ссылке об этом ничего нет?

m1fs1 23.05.2016 13:15

Где в Firefox включить не подскажешь, а то по твоей ссылке об этом ничего нет?
http://stackoverflow.com/questions/17088609/disable-firefox-same-origin-policy

m1fs1 23.05.2016 13:25

Цитата:

Сообщение от Max Power (Сообщение 417369)
Еще - на https://www.gibdd.ru/api/ информация о том что сервис в стадии разработки. Если есть api - должен быть саппорт, там можно узнать когда планируется реализация интересующего функционала, может быть просто проще будет дождаться его.

Вот что нашел на тостере (
https://toster.ru/q/138645
):

Вот страничка с описанием методов в ГИБДД АПИ www.gibdd.ru/api
Но к сожалению там не описан метод получения списков штрафов по номеру автомобиля. Подскажите пожалуйста, может быть кто-то сталкивался с данной проблемой? Может быть кто-то знает хороший бесплатный сервис?
P.S. Вопрос задаю тут, так как на мое письмо, которое я выслал по адресу, указанному в обратной связи, уже долгое время никто не отвечает.

Вопрос задан более года назад 4110 просмотров

До этого изучал их сайт. Судя по всему разработчики забили. Там есть сведения о региональных отделениях ГИБДД, о штрафах там нового нет (сейчас не могу посмотреть, сайт действительно лежит).

m1fs1 23.05.2016 13:32

Цитата:

Сообщение от Max Power (Сообщение 417368)
Делать надо однозначно на стороне сервера, да.

Вот список возможных направлений:
1) В данный момент сайт gibdd.ru фактически лежит, возможно проблема в этом
2) Есть платные сервисы автоматического распознавания капчи
3) User-agent - эмуляция запроса из браузера
4) Phantomjs - полная эмуляция браузера с JS
5) Таймауты между запросами чтобы не банили
6) Прокси для обхода возможного бана.

В целом если нет api - такие задачи решаются сложно и с кучей головной боли.

1) у меня обращение не на сайт ГИБДД, на на pddmaster.ru;
2) о платных думал, читал. Для их подключения нужен хотя бы более менее рабочий код, которого пока нет. Возможно, что даже наш оператор будет капчу вводить вместо индусов :)
5) пока я делаю один запрос, таймаут не нужен, но, похоже, что в приведенном коде таймаут не срабатывает.

Rise 23.05.2016 13:32

m1fs1, у меня build 43, а там про до 36-го, как быть?

m1fs1 23.05.2016 13:36

Цитата:

Сообщение от Rise (Сообщение 417376)
m1fs1, у меня build 43, а там про до 36-го, как быть?

Аддон не работает, не пробовали установить? В последнем посте от марта пишут:
The browser addon answer by @Giacomo should be useful for most people and I have accepted that answer, however, for my personal research needs (TL;won't explain here) it is not enough and I figure other researchers may need to do what I did here to fully kill SOP.

Rise 23.05.2016 13:44

m1fs1, а если браузер обновить попробовать так не проще получится?


Часовой пояс GMT +3, время: 15:43.