我收到錯誤:“錯誤代碼:1020”。我試圖抓取表單資料的頁面是:https : //v2.gcchmc.org/medical-status-search/。
這是我的代碼:
$initial = file_get_contents('https://v2.gcchmc.org/medical-status-search/');
$check = preg_replace('/. ?input type="hidden" name="csrfmiddlewaretoken" value="(. ?)".*/sim', '$1'. $initial);
列印 $check;
“錯誤代碼:1020”我試圖抓取表單資料的頁面是https://v2.gcchmc.org/medical-status-search/。你能幫我看看下面的代碼有什么問題嗎?
uj5u.com熱心網友回復:
該站點受 cloudflare 保護。當您啟用 javascript 時,您可以繞過 cloudflare,因此通過命令列是行不通的。但是,您可以使用 Puppeteer 來自動執行此操作,例如 PHP 中也提供了它。但是您必須禁用無頭才能使其作業。
安裝
composer require nesk/puphpeteer
npm install @nesk/puphpeteer
腳本(test.php)
use Nesk\Puphpeteer\Puppeteer;
require_once __DIR__ . "/vendor/autoload.php";
function getToken($content)
{
preg_match_all('/. ?input type="hidden" name="csrfmiddlewaretoken" value="(. ?)".*/sim', $content, $matches);
return $matches[1][0];
}
$puppeteer = new Puppeteer;
$browser = $puppeteer->launch(['headless'=>false]);
/**
* @var $page \Nesk\Puphpeteer\Resources\Page
*/
$page = $browser->newPage();
$page->goto('https://v2.gcchmc.org/medical-status-search/');
var_dump(getToken($page->content()));
$browser->close();
現在,在運行這樣的腳本時,您可能不需要 csrfmiddlewaretoken,但如果您選擇使用此功能,則可以從這里進一步使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/352660.html
上一篇:如何正確比較兩個Unix時間戳
下一篇:根據資料庫中的值更改div類值
