Наблюдайте за изменениями на странице .jspx с хешем сессии - PullRequest
0 голосов
/ 05 июля 2018

Я хочу посмотреть изменения на веб-странице, но не знаю, как получить URL-адрес, чтобы добавить его в наблюдатель.

Так вы попадаете на нужную страницу. Сначала вы идете на эту страницу . (Если появляется ошибка Служба временно недоступна , попробуйте принудительно перезагрузить, Shift + Нажмите Перезагрузить или откройте ее на новой странице с помощью Alt + Intro )

Есть несколько предметов, начинающихся с "Convocatoria". Каждый элемент имеет несколько разделов: OPE , Тип персональных и т. Д., А затем 4 ссылки. Меня интересует страница, на которую вы перенаправляетесь, когда нажимаете 3-ю ( Tablón de anuncios ). Выберите одну (например, первую) и нажмите Tablón de anuncios . Выделенная часть должна быть просмотрена, т. Е. Есть ли какая-либо строка, добавленная в таблицу (только одна ATOW).

Text to watch highlighted

Проверка элемента (этой 3-й ссылки) показывает

<a onclick="submitForm('_id2',1,{source:'_id63'});return false;" class="x8w" href="#">Tablón de anuncios</a>

Функция submitForm находится в https://sede.cordoba.es:4443/seleccion/web-empleo/adf/jsLibs/Common10_1_3_4_0.js (строка 2749). Если я установлю разрыв в начале этой функции, шаг за шагом я достигну строки 3013

form.submit();

И это все, что я знаю. Страница загружается, но загруженные ресурсы - это картинки, css, js и т. Д. Единственная страница, которую я вижу в Сеть , имеет тот же URL, что и первая (...faces/empleo.jspx).

  • Допустимый ответ: «Это URL-адрес, который вам нужен», если вы можете легко определить, как submitForm('_id2',1,{source:'_id63'}) преобразуется в этот URL-адрес. Или если вы объясните путь действий, чтобы выяснить это.

  • Или документированный источник и объяснение того, почему это невозможно (без взлома сервера или около того).


Решение в Android (или так кажется)

В поисках информации по этой теме я наткнулся на это бесплатное приложение для Android (есть также профессиональная версия, но она вам не нужна), поэтому я попробовал. Он имеет встроенный браузер: вы можете открывать страницу, перемещаться куда угодно, выбирать элемент (или группу из них) на последней странице и просматривать его / их.

Я перешел на нужную страницу, выбрал таблицу, и программа показала мне только текст внутри нее, чтобы сравнить изменения, поэтому я думаю, что когда появится новая строка, она предупредит меня.

Вы можете настроить каждое предупреждение на использование javascript или нет , поэтому я выбрал его. На данный момент он не показывал предупреждения, поэтому кажется, что он достигает нужной страницы, а не первой, которую я открыл, , но вы не можете быть уверены, пока не произойдет изменение (и не знаю, когда это произойдет, но я буду сообщите здесь о результате).

Я бы предпочел часы от Windows (и я буду продолжать поиск), но сейчас я чувствую себя достаточно уверенно. При просмотре страниц я предпочитаю использовать два разных решения на всякий случай и тем более.

Почти решение

Команда curl, предоставленная Марксом Полаковым , дала мне идею. Если вы можете загрузить нужную страницу (с curl или любым другим) на file.htm внутри folder, легко запустить веб-сервер localhost (я знаю, PHP и Python делают это, но должно быть множество из них), чтобы поделиться этим path и смотреть localhost/file.htm на изменения.

Все, что вам нужно сделать, это запускать задачу Windows каждые x минут / часов, чтобы обновить file.htm. Я полагаю, браузер без головы (PhantomJS или тому подобное) сделает загрузку, фактически щелкнув ссылку и сохранив страницу, но я на самом деле не знаю, как это сделать .

Ни один ответ не дает рабочего подтверждения концепции его идеи, но, по крайней мере, Маркс Полаков попробовал и дал ценные подсказки, поэтому я проголосую, и система назначит ему награду.

Ответы [ 3 ]

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

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

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

Проходя по коду для обработчика onclick, вы видите, что в какой-то момент он находит форму с идентификатором _id2 (строка 2775) и после добавления некоторых параметров через скрытые поля ({source:'_id63'}) отправляет ее. (Чтобы это выяснить, откройте Common10_1_3_4_0.js в Chrome DevTools, поместите точку останова на строку 2758 и выполните шаг выполнения.) Сам запрос представляет собой запрос POST для https://sede.cordoba.es:4443/seleccion/web-empleo/faces/empleo.jspx со следующими параметрами POST:

oracle.adf.faces.FORM: _id2
oracle.adf.faces.STATE_TOKEN: 5
event: 
source: _id63

Некоторые из них уже были в HTML формы, а другие были добавлены submitForm().

Итак, чтобы ответить на ваш вопрос, вашему наблюдателю HTTP потребуется поддержка POST, и если он это сделает, добавьте в него этот URL с этими параметрами.

РЕДАКТИРОВАТЬ: вот команда cURL (экранированная для Windows cmd):

curl -X POST "https://sede.cordoba.es:4443/seleccion/web-empleo/faces/empleo.jspx" --data "oracle.adf.faces.FORM=_id2^&oracle.adf.faces.STATE_TOKEN=9^&event=^&source=_id63"
0 голосов
/ 09 июля 2018

Форма, содержащая URL-адрес, на котором публикуются данные, находится в документе. В вашем конкретном примере форма выглядит так:

<form id="_id2" ... method="POST" action="/seleccion/web-empleo/faces/empleo.jspx;jsessionid=efba550217d9f5adbe8cbe05c049fbc967ac5e5fe755adb2a53bf3a41aa5eaa8.e3iMchmQbhuNe3aLbN8Rax8Nay0">

Итак, если вы хотите перехватить вызовы на этот URL, вы можете сделать следующее:

var _oldSubmitForm = submitForm
submitForm = function (form, doValidate, parameters) {
  console.log(document.forms[form].action)
  _oldSubmitForm(form, doValidate, parameters)
}

Я бы не советовал делать это таким образом, но я не знаю, в какой ситуации вы находитесь и какой у вас контроль над сгенерированным HTML.


Обновление

Как объяснил cdlvcdlv, вышесказанного недостаточно. Ситуация здесь довольно сложная. Желаемый контент отображается только тогда, когда форма размещена с конкретной информацией. Простая публикация формы не будет работать, поскольку сервер ожидает, что сеанс Java будет доступен.

Единственный способ заставить сервер отобразить нужную страницу - выполнить следующие шаги:

  • Выполните GET запрос к https://sede.cordoba.es:4443/seleccion/web-empleo/faces/empleo.jspx и извлеките файл cookie (заголовок Set-Cookie) из ответа.
  • Сделайте запрос POST с соответствующей информацией и предоставьте запрос cookie (заголовок Cookie). В качестве альтернативы jesessionid может быть предоставлено на URL.

Если вы хотите иметь службу, которой можно дать URL-адрес и просто загрузить страницу, вам нужно самостоятельно настроить сервер для выполнения описанных выше действий. Этот сервер будет выполнять 2 действия и возвращать соответствующий контент.

Подводя итог: невозможно отобразить правильную страницу с помощью одного GET запроса.

...