andiwijaya/dusk-secure

一个更安全的Laravel Dusk,提供简单的端到端测试和浏览器自动化,无需暴露路由或认证。

1.0 2020-09-21 14:19 UTC

This package is auto-updated.

Last update: 2024-09-21 23:36:15 UTC


README

Total Downloads Latest Stable Version License

是什么?

Laravel Dusk是一个非常简单易用的浏览器自动化和测试工具。然而,它主要是为了测试而设计的,因此从未真正打算在生产环境的前台大放异彩。

现在不再是了。我已经移除了所有暴露路由或与您的用户交互的部分。

为什么?

这样我们就可以使用我们所有人都熟悉和喜爱的框架中的惊人表达式的API来抓取网页!所有您熟悉和喜爱的方法都在这里,只是不包括与用户交互或作为用户的方法。有关更多详细信息,请参阅下面的官方文档。

注意事项和陷阱

当使用此工具作为抓取器时,您通常仅限于创建dusk测试,然后通过php artisan dusk触发它们。

您可以将此过程自动化并将其应用于您可以安排的命令总线。

以下是方法

像以前一样创建您的dusk测试。然后,创建一个新的命令,确保为其提供一个唯一的签名。

在handle方法中,只需创建您刚刚创建的测试类的实例,初始化它并运行它

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()
{
    $event = new \Tests\Browser\Test;
    $event->prepare();
    $event->testExample();
}

在测试内部处理您抓取的数据,这样您就成功了。

当您为dusk创建测试时,请确保包括$browser->quit();以确保浏览器自行清理。在处理完您抓取的数据后执行此操作。

下一步是什么?

在接下来的几天内,我将在代码库中创建一个2.0分支,以跟上官方包的步伐。它引入了无头操作,这将真正帮助进行一些严肃的抓取。

开玩笑的!版本1.1.0升级了二进制文件,并允许无头操作。

要运行无头抓取,请查看DuskTestCase.php,确保在use语句中添加ChromeOptions,并设置$options变量并将其传递给RemoteWebDriver,如下面所示。

use Facebook\WebDriver\Chrome\ChromeOptions;

/**
 * Create the RemoteWebDriver instance.
 *
 * @return \Facebook\WebDriver\Remote\RemoteWebDriver
 */
protected function driver()
{
    $options = (new ChromeOptions)->addArguments(['--headless']);

    return RemoteWebDriver::create(
        'https://:9515', DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY, $options
        )
    );
}

如果有人想帮忙贡献PR。

官方文档

Dusk的文档可以在Laravel网站上找到。

许可证

Dusk-Secure是开源软件,许可协议为MIT许可证