エックスサーバーで動くPHPプログラムからCloudflare利用サイトにアクセスできないことがあったので、curl-impersonate というのを使ってみる。
ダウンロード
$ wget https://github.com/lwthiker/curl-impersonate/releases/download/v0.6.1/curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz
展開
$ tar xzf curl-impersonate-v0.6.1.x86_64-linux-gnu.tar.gz
実行
$ ./curl_chrome116 {サイトURL} --cacert /etc/ssl/certs/ca-bundle.crt
動いた。
ただ、特定のサイトで「400 Bad Request」になってしまうことがある。
素のcurlコマンドなら問題ないのにどうして・・
curl_chrome116
ファイルの中に書いてある--http2
のオプションを削除したら問題なくなった。
原因はよくわからないが古いNginxが発生条件かもしれない? まあいいか。
PHPからは外部curlコマンドの代替として使える。