【问题标题】:PhantomJS or CasperJS form autosubmitPhantomJS 或 CasperJS 表单自动提交
【发布时间】:2018-07-20 09:36:43
【问题描述】:

我正在构建一个利用 CSRF 漏洞的实验室任务。 我需要一个机器人,它会访问我的页面并执行 JS:

<html>
<head>
</head>
  <body>
    <form action="http://localhost:9010/csrf/register.php" method="POST" id="csrf-form">
      <input type="hidden" name="login" value="casper" />
      <input type="hidden" name="password" value="casper" />
      <input type="submit" value="Submit request"/>
    </form>
  </body>
  <script>document.getElementById("csrf-form").submit()</script>
</html>

我无法使用 PhantomJS 或 CasperJS 继续它。 我不知道不同学生的 HTML 代码会是什么样子(表单 id 属性可以不同),我只想在页面上执行 JS 代码。 /opt/casperjs 中的 CasperJS 版本 1.1.4,使用 phantomjs 版本 2.1.1

var casper = require('casper').create();
casper.start('http://127.0.0.1/mypage.html');

【问题讨论】:

  • 您的 PhantomJS 版本是多少?你能展示你的剧本吗?你怎么知道它不起作用?
  • CasperJS 版本 1.1.4 在 /opt/casperjs,使用 phantomjs 版本 2.1.1

标签: phantomjs casperjs


【解决方案1】:

由于您不知道表单id 属性(并且由于其他元素属性特定于每个学生),您可以使用casper.fillXPath() 使用通用选择器来填写并自动提交您的表单。

示例:

casper.start('https://example.com/', function () {
  this.fillXPath('form', {
    '//form/input[@type="hidden"][1]': username,
    '//form/input[@type="hidden"][2]': password,
  }, true);
});

否则,如果您了解有关表单中使用的选择器的更多信息,可以考虑使用 casper.fill()casper.fillSelectors()casper.fillLabels()

如果您需要简单地在 Page DOM 环境中执行 JavaScript,可以使用casper.evaluate()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2018-07-31
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多