【问题标题】:How to send a pre-built request如何发送预建请求
【发布时间】:2017-01-11 05:52:31
【问题描述】:

我想要什么: 我正在使用一个网站(我希望保持匿名)来购买证券。它非常复杂,据我所知,它是用 JavaScript 编码的。 我想对这个网站做的是从一个单独的过程中“注入”一个购买东西的请求。因此,不必手动搜索我想购买的东西并进入那里并手动填写表格,而是单击购买并确认“您确定要下订单吗?”弹出窗口我只想在直接按下确认按钮时向服务器发送正在发送的任何命令/请求。

要特别清楚:我只是不想经历手动麻烦,而只是发送一个预先构建的请求,其中嵌入了必要的参数。 我当然不想做任何恶意的事情,只是让我的订单输入更快更顺畅。不需要自动登录或类似的东西。

我知道这没什么好做的,但我把它扔在那里并问一个问题:可以做到吗? 我真的不知道这些东西在幕后是如何工作的,也许请求以某种方式加密为一些几乎不可能进行逆向工程的自定义格式,或者可能不是。

【问题讨论】:

  • 所以您想绕过网站控制并直接访问其端点?除非该网站有公共 API,否则我认为您的要求有点不道德。
  • 是的,我想这就是我想要做的。他们没有公共 API。也许你是对的,但我并没有真正从用户的角度看到它是多么不道德,就像我说的那样,我只是想让我的工作流程更顺畅。也许这被认为是非常不道德的,我不知道,就像我说我对这些事情没有什么经验。
  • @Tottish 对于此类事情,您可以使用任何主要浏览器中可用的任何网络嗅探器或开发人员工具,在网络网格上,您可以查看所有带参数的请求,然后将此请求与其他参数一起使用,答案的迈克尔对于您正在搜索的内容非常准确。

标签: javascript user-interface interface customization


【解决方案1】:

我想详细说明我的评论和 Michael Ratliff 的回答。

举例。

我们得到了一些服务。该服务的管理可以通过网络界面完成。但仅在手动模式下,没有 API(是的,2016 年,没有 API)。所以一开始没有太多的管理工作,我们手动完成。

但是随着时间的流逝,管理工作量呈指数级增长,因此我们遇到了必须自动化这项工作的情况(即使发布了几个新版本,仍然没有 API)。

我们做了什么:

我们在浏览器中打开了我们需要的页面,打开 Inspect Element(在 Firefox 中),打开 Network,填写网络表单,按下我们需要的按钮。在左侧,我们看到所有服务请求,通过按下右侧的任何请求,将显示发送/获取内容、所有请求及其参数的完整描述。然后我们获取这些参数,更改它们并发送回服务器。不过有点逆向工程。

为了自动化,我们使用了 PHP 和 CURL。目前,几乎所有与服务相关的工作都是自动化的。

是的,我们使用了 Selenium(在 PHP 和 CURL 之前)。您可以打开您需要的表格。按 Rec 在 web 表单上做一些事情,Selenium 收集这些数据,然后你可以更改 Selenium 脚本中的参数并重新运行它。

【讨论】:

    【解决方案2】:

    “注入”可能是错误的术语。大多数人会想到通常是恶意活动的 sql 注入或 javascript 注入。这似乎不是你想要的。

    您正在寻找的是一种自动化工具。有很多可用的工具。尝试用谷歌搜索“网络自动化工具”。 Selenium http://www.seleniumhq.org/ 和 PhantomJS http://phantomjs.org/ 是流行的。

    此外,您可以重新创建实际购买证券的请求。如果您使用 Chrome,您可以打开开发者工具并在浏览网站时查看“网络”选项卡上显示的内容。 Firefox 和 Edge 也有类似的工具。当您进行购买时,您将看到放置它的实际网络请求。然后,根据网站的实施方式,您可能只能使用 Postman 之类的工具复制该请求。

    但是,在您执行上述任何操作之前,我建议您查看您提到的网站的 TOS。他们可能会明确禁止此类活动。

    【讨论】:

    • 哇,非常感谢!这很有帮助。我不知道存在这样开发的自动化工具。好东西!
    猜你喜欢
    • 1970-01-01
    • 2013-05-21
    • 2019-10-28
    • 2021-05-11
    • 1970-01-01
    • 2012-07-04
    • 2011-07-16
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多