tysontruong / dusk-secure
一个更安全的 Laravel Dusk,它提供了简单的一端到端测试和浏览器自动化,而不暴露路由或身份验证。
Requires
- php: >=5.6.4
- facebook/webdriver: ~1.0
- illuminate/console: ~5.4
- illuminate/support: ~5.4
- nesbot/carbon: ~1.20
- symfony/console: ~3.2
- symfony/process: ~3.2
Requires (Dev)
- mockery/mockery: ^0.9.6
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-09-25 08:23:50 UTC
README
什么?
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 许可证 发布。