Запустить нажатие кнопки с URL - PullRequest
0 голосов
/ 03 июля 2018

Нам нужно очистить Веб-сайт VEEC для общего количества раз в неделю.

Например, за неделю с 17.10.2016 по 23.10.2016, URL возвращает число Всего 167 356 при нажатии кнопки поиска. Мы хотим, чтобы этот номер был сохранен в нашей базе данных.

Я использую coldfusion для генерации еженедельных дат в качестве параметров и передаю их, как указано выше URL . Но я не могу найти параметр запроса, чтобы вызвать событие нажатия кнопки «Поиск».

Я пробовал как это & это , но, похоже, ничего не работает.

Есть указатели?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Если вы хотите использовать безголовый браузер PhantomJS (https://en.wikipedia.org/wiki/PhantomJS) для этого, вот скрипт, который сохранит итог в текстовый файл.

В командной строке после установки PhantomJS запустите phantomjs.exe main.js.

main.js

<ч />
"use strict";

var firstLoad = true;

var url = 'https://www.veet.vic.gov.au/Public/PublicRegister/Search.aspx?CreatedFrom=17%2F10%2F2016&CreatedTo=23%2F10%2F2016';

var page = require("webpage").create();

page.viewportSize = {
    width: 1280,
    height: 800
};

page.onCallback = function (result) {
    var fs = require('fs');
    fs.write('veet.txt', result, 'w');
};

page.onLoadStarted = function () {
    console.log("page.onLoadStarted, firstLoad", firstLoad);
};

page.onLoadFinished = function () {

    console.log("page.onLoadFinished, firstLoad", firstLoad);

    if (firstLoad) {

        firstLoad = false;

        page.evaluate(function () {
            var event = document.createEvent("MouseEvents");
            event.initEvent("click", true, true);
            document.querySelectorAll(".dx-vam")[3].dispatchEvent(event);
        });

    } else {

        page.evaluate(function () {
            var element = document.querySelectorAll('.dxgv')[130];
            window.callPhantom(element.textContent);
        });

        setTimeout(function () {
            page.render('veet.png');
            phantom.exit();
        }, 3000);

    }

};

page.open(url);
<ч />

Сценарий не идеален, вы можете поработать над ним, если вам интересно, но, как и он, он сохранит итоговое значение в файл veet.txt, а также сохранит скриншот veet.png.

0 голосов
/ 03 июля 2018

Кажется, что для каждой отправки формы добавляется токен CRSF, который предотвращает злонамеренную деятельность. Что еще хуже для вас, токен CRSF изменяется для каждой отправки формы, а не только для каждого пользователя, что делает его практически невозможным для обхода.

Когда я отправляю запрос CFHTTP POST к этой форме, я возвращаю HTML FileContent, но в заполнителях ячеек таблицы результатов нет данных БД. Мне кажется, что владелец формы разрешает отправку формы из HTTP-запроса, но если токен CRSF не может быть проверен, данные БД не возвращаются.

Возможно, стоит спросить владельца сайта, есть ли какой-нибудь REST API, к которому вы можете подключиться ...

...