クラウドにおいてあるデータを自動で読みだそうとスクリプトを組んでも PHPなどの内部コマンドを使うとその挙動から
以下のような「Server: cloudflare」の場合、403 Error か 「Just a moment…」ページ表示でブロックされてしまう。
HTTP/1.1 200 OK
Date: Sat, 18 Oct 2025 05:55:55 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: cloudflare
vary: Accept-Encoding
x-cache: EXPIRED
last-modified: Sat, 18 Oct 2025 04:44:44 GMT
Age: 4927
Cache-Control: max-age=3600
cf-cache-status: HIT
CF-RAY: xxxxxxxxxxxxxx-XXX
ブラウザによるアクセスは許してくれるので、コマンドライン型ブラウザ(?)を外部コマンドとして使うことにした。その関数のメモ
/**
* WEBページのダウンロード
* cloudflare対応版
*
* @param string $url ダウンロードしたいURL
* @param string $ref Referer
* @return string ダウンロードしたページ内容
*/
function CheckUrl(string $url, string $ref="") :string
{
if ($ref==""){
// $ref=" -e ". $url;
} else {
$ref=" -e " . $ref;
}
$ua =" -A \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\"";
$cmd = 'curl';
if (file_exists("cookie.txt")){
$cke=" -b cookie.txt";
}else $cke="";
$cmd .=" -i --no-progress-meter -c cookie.txt" . $cke . $ref . $ua ." ". $url;
exec($cmd, $opt, $return_ver);
if ($return_ver != 0) $opt=null;
return implode("\n", $opt);
}