使用 cURL 和 php 执行网站的点击和注销

perform clicks and logout of website using cURL and php

我使用 cURL 登录网站。自然的问题是如何执行按钮点击而不是最终注销。例如..javascript 使用 click() 函数。 php有什么用?感谢提供线索。

我正在关注网络抓取方面的书。在其中,作者登录到它的出版商网站。这本书很旧,已经过时了。更重要的是,它没有提到注销。这是发布者:https://www.packtpub.com/

您不能 click 单独使用 PHP 按钮。 PHP 不是这样的。 PHP 可以下载网页的 HTML,但不能像浏览器那样执行操作。

如果你想这样做,你需要一个无头浏览器。无头浏览器通常被视为不可见的浏览器。您可以做大多数普通浏览器可以做的事情。为此,有 PhantomJS, and CasperJS

还有 PHP 个使用 PhantomJS 的库。例如 PHP PhantomJS。就个人而言,我从来没有用 PHP 做过这件事,但我确实经常使用 PhantomJS 和 CasperJS。

除此之外,您可以使用 PHP 为 link 或按钮解析 DOM,并复制单击 [=] 时发出的 HTTP 请求30=].

例如,如果 link 转到 /contactus,您只需使用 cURL 创建一个对此页面的 GET 请求。响应将是源代码 and/or headers.

我目前正在开发一个项目,该项目使用 CasperJS、PHP 和 Redis 为大型社交网络创建一个相当复杂的 scraper/automation/analysis 工具。

附带说明一下,一些网站严重依赖 JavaScript,使用 cURL 可能还不够。您可以通过解析 JavaScript file/s 和其他一些高级魔法来解决这个问题,但请相信我,您不想走这条路。这就是我有时使用 CasperJS 的原因。它速度较慢,但​​目前我们仅此而已。

至于登出……删除你的cookie文件。完成。

我最近发布了一个项目,可以 PHP 访问浏览器。在这里获取:https://github.com/merlinthemagic/MTS,引擎盖下是 PhantomJS 的一个实例,就像其他人建议的那样,这个项目只是包装了功能。

下载并设置后,您只需使用以下代码:

$myUrl          = "http://www.example.com";
$windowObj      = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl);

//select the username input field, in this case it has id=username
$windowObj->mouseEventOnElement("[id=username]", 'leftclick');
//type your username
$windowObj->sendKeyPresses("yourUsername");

//select the password input field, in this case it has id=passwd
$windowObj->mouseEventOnElement("[id=passwd]", 'leftclick');
//type your password
$windowObj->sendKeyPresses("yourPassword");

//click on the login button, in this case it has id=login
$windowObj->mouseEventOnElement("[id=login]", 'leftclick');

//click on all the buttons you need with this function
$windowObj->clickElement("[id=someButtonId]");
$windowObj->clickElement("[id=someOtherButtonId]");

//if you want the DOM or maybe screenshot and any point run:
$dom       = $windowObj->getDom();
$imageData = $windowObj->screenshot();