如何从浏览器中调用数百个PHP页面?

时间:2014-05-04 11:04:03

标签: php

所以这是我的情况:

我用一个相当愚蠢的控制面板来调节一个论坛。有一个报告列表(垃圾邮件等),每个条目旁边都有一个“标记为已读”按钮。问题是,没有“标记所有读取”按钮这样的东西。您必须手动点击那里的数百个按钮。

我注意到这些按钮使用以下方案打开PHP页面:

http://www.example.com/mark_as_read.php?id=1
http://www.example.com/mark_as_read.php?id=2
http://www.example.com/mark_as_read.php?id=3
...
http://www.example.com/mark_as_read.php?id=100

正如您所看到的,唯一改变的是ID参数。

我的印象是我能以某种方式进行某种批量调用。

现在,我不是任何一种网络程序员。但是,我知道如何使用Java等方式向网站发送HTTP请求。所以我继续写了一个小程序,调用该链接100次(每次迭代增加ID号)。

它不起作用,因为您需要作为主持人进行身份验证。该网站通过浏览器的cookie确定这一点。我对此并不了解,所以我放弃了我的Java解决方案。

似乎我需要从浏览器进行这些调用,以便网站可以使用我的cookie来进行操作。

我怎样才能做到这一点?如何从浏览器中调用数百个PHP页面?


一些注意事项:

  • 我不拥有该网站,也无法访问其内部网站。
  • 我可以使用任何浏览器。铬/ Safari浏览器/ IE。
  • 如果您未经过身份验证,则无法使用PHP调用(因此您需要使用浏览器)。
  • 我对调用的PHP输出不感兴趣。我只想要执行PHP代码。
  • 我的浏览器中没有打开100个标签会很棒。

2 个答案:

答案 0 :(得分:3)

如果您只需要快速而肮脏的解决方案,可以在浏览器JavaScript控制台中注入一些JavaScript函数。

原谅这个冗长的 - 它编译的CoffeeScript。

var mark_all_as_read, mark_as_read;

mark_as_read = function(id) {
  var request;
  request = new XMLHttpRequest();
  request.open("get", "http://www.example.com/mark_as_read.php?id=" + id);
  return request.send();
};

mark_all_as_read = function(ids) {
  var id, _i, _len, _results;
  _results = [];
  for (_i = 0, _len = ids.length; _i < _len; _i++) {
    id = ids[_i];
    _results.push(mark_as_read(id));
  }
  return _results;
};

现在,您应该可以从控制台拨打mark_as_read(123)mark_all_as_read([123, 456])

请注意您的虚拟主机可能不同意您同时发送数百个请求。在这种情况下,您可以添加第三个参数false request.open方法调用。这将通过在执行下一个请求之前等待每个请求完成来显着减慢循环。

答案 1 :(得分:0)

编写一个Chrome插件,为您执行此操作。插件基本上是在您所在页面范围内运行的Javascript,因此您可以轻松读取项目列表并调用URL。我认为(但我不确定)您的插件执行的任何ajax请求也在页面范围内运行,因此不受相同原始策略的影响。

您需要一些样板代码,但幸运的是,有很多教程可以帮助您入门:

如果只是适合您,您不必注册您的插件。您可以从您创建的源代码安装它:

否则,您可以在单独的标签中打开报告。也许这很不方便,但大多数浏览器都会关闭此标签右侧的所有标签,因此您可以通过两次点击关闭所有标签。