javascript - 使用 session 哈希观察 .jspx 页面中的更改

标签 javascript forms watch jspx

我想观看网页中的更改,但我不知道如何获取 URL 以将其添加到观察器。

这就是您到达所需页面的方式。首先你去这个page . (如果您遇到服务暂时不可用错误,请尝试强制重新加载,Shift+单击重新加载或使用 Alt+< 在新页面中打开它kbd>简介)

有几个项目以“Convocatoria”开头。每个项目都有几个部分:OPETipo de personal 等,然后是 4 个链接。单击第三个 (Tablón de anuncios) 时重定向到的页面是我感兴趣的页面。选择一个(例如第一个)并单击 Tablón de anuncios . 高亮部分是要看的,即是否有任何行添加到表中(只有一个ATOW)。

Text to watch highlighted

检查元素(第三个链接)显示

<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 行) .如果我在那个函数的开头设置一个 break,一步一步,我到达 3013 行

form.submit();

这就是我所知道的。页面加载但加载的资源是图片、css、js 等。我在 Network 中看到的唯一页面具有与第一个相同的 URL (...faces/empleo.jspx )。

  • 如果您可以轻松推断出 submitForm('_id2',1,{source:'_id63'}) 是如何转换的,则有效答案是“这是您需要的 URL”进入该网址。或者你解释一下 Action 的路径就可以找出来。

  • 或者有记录的来源以及为什么这是不可能的解释(无需入侵服务器等)。


Android 中的解决方案(或看起来如此)

在寻找关于这个主题的信息时,我偶然发现了这个 free Android app (还有一个专业版,但你不需要它)所以我试了一下。它有一个嵌入式浏览器:你可以打开一个页面,导航到你想要的任何地方,在最终页面中选择一个元素(或它们的一组)并观看它/它们。

我导航到我需要的页面,选择了表格,程序只显示了其中的文本以比较更改,所以我想当有新行时它会提醒我。

您可以配置每个警报是否使用javascript,所以我选择使用它。现在,它没有显示任何警报,所以它似乎到达了所需的页面,而不是我打开的第一个页面,但是在有变化之前你不能确定(并且不知道什么时候会,但我'我会在这里通知结果)。

我更喜欢 Windows 的 watch (我会继续搜索),但现在我有足够的信心。观看页面时,我更喜欢使用两种不同的解决方案以防万一,这里更是如此。

几乎解决方案

Marks Polakovs 提供的curl 命令给了我一个想法。如果您可以将预期的页面(使用 curl 或其他)下载到 文件夹 中的 file.htm,则很容易启动 localhost web 服务器(我知道 PHP 和 python 会这样做,但肯定有很多)共享那个 path 并观看 localhost/file.htm进行更改。

然后您所要做的就是每 x 分钟/小时运行一次 Windows 任务以刷新 file.htm。我假设一个 headless 浏览器(PhantomJS 或类似的)会完成下载工作,实际上是单击链接并保存页面,但我实际上不知道如何做吧。

没有答案提供其想法概念的有效证明,但至少 Marks Polakovs 尝试了它并给出了有值(value)的提示,所以我会赞成它,系统会给他分配赏金。

最佳答案

单步执行 onclick 处理程序的代码,您会发现在某些时候它会找到 ID 为 _id2 的表单(第 2775 行),并且在通过 hidden 添加一些参数之后字段 ({source:'_id63'}),提交它。 (要找出这一点,请在 Chrome DevTools 中打开 Common10_1_3_4_0.js,在第 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"

关于javascript - 使用 session 哈希观察 .jspx 页面中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51186968/

相关文章:

javascript - 使用选项值过滤wordpress循环

angularjs - 在 Angular/Typescript 中使用 $watch

bash - 更新 bash 中 watch 命令中的变量

javascript - 循环淡入淡出句子中的单词

javascript - jQuery鼠标悬停动画效果

java - 通过Java代码提交Html表单

javascript - 是否可以从javascript提交的表单中获取响应数据?

javascript - gulp watch 并不总是有效

javascript - 不改变html文本框输入

javascript - 获取房间内的用户数量