story of my life
過去の蓄積を見るために書く日記.
トップページにアクセスカウント機能追加とあと一つ機能 #wordpress
文字数[2805文字] この記事は4分30秒で読めます.
おはようございます.トップページにアクセスカウント機能追加とあと一つ機能を追加しました.あと一つは他の閲覧者が何の記事を見ているか表示する機能になります.ちなみに最初、プッシャーというモノを使用して構築していたんですが、レンタルサーバーの規約違反になりそうなので取りやめてJSで一分間隔でtxtファイルを見に行くように変更しました.

これだったら、レンタルサーバーに負荷はかからないだろうと言う事で実際に一日、試した結果、負荷は以前と変わらずでしたので良かったです.
作っていて分かったことはロボット巡回が多い...ボットはブロックするように処理を行ったのですが、ヘッドレスブラウザなどで巡回してくるボットには対応出来ていないのが現状です.正直なところ見分けがつかない.
<?php
/**
* クローラーや不正ボットを検出する関数
*
* @return bool クローラー/不正ボットの場合はfalse、それ以外はtrue
*/
function isLegitimateUser() {
// User-Agentを取得
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
// User-Agentが空の場合は疑わしい
if (empty($userAgent)) {
return false;
}
// 既知のクローラー/ボットのパターン
$botPatterns = [
'bot', 'crawl', 'spider', 'slurp', 'scraper',
'headless', 'phantom', 'selenium', 'puppeteer',
'curl', 'wget', 'python', 'java', 'perl',
'scrapy', 'http_request', 'httpclient', 'axios',
'postman', 'insomnia', 'ahrefs', 'semrush',
'mj12bot', 'dotbot', 'rogerbot', 'yandex',
'baiduspider', 'exabot', 'facebot', 'ia_archiver'
];
// User-Agentに疑わしいパターンが含まれているかチェック
$userAgentLower = strtolower($userAgent);
foreach ($botPatterns as $pattern) {
if (strpos($userAgentLower, $pattern) !== false) {
return false;
}
}
// 許可する正規のクローラー(必要に応じて)
$allowedBots = [
'googlebot', 'bingbot', 'slackbot', 'twitterbot',
'facebookexternalhit', 'linkedinbot', 'discordbot'
];
foreach ($allowedBots as $allowedBot) {
if (strpos($userAgentLower, $allowedBot) !== false) {
// 正規のクローラーも拒否したい場合はこの部分を削除
// return true;
return false; // クローラーとして扱う場合
}
}
// リファラーのチェック(オプション)
$referer = $_SERVER['HTTP_REFERER'] ?? '';
// 疑わしいリクエストメソッドのチェック
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
if (!in_array($method, ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])) {
return false;
}
// Acceptヘッダーのチェック(通常のブラウザはこれを送信する)
$accept = $_SERVER['HTTP_ACCEPT'] ?? '';
if (empty($accept)) {
return false;
}
// 正常なユーザーと判断
return true;
}
// 使用例
if (isLegitimateUser()) {
echo "正常なユーザーです";
// 通常の処理を続行
} else {
echo "クローラーまたは不正ボットです";
// アクセスを拒否するか、別の処理を実行
http_response_code(403);
exit;
}
?>これは今後の課題になりそうですが、当分は放置です.
明日へ続く.
3084番目の投稿です/565 回表示されています.
中の人🏠️
AIによるおすすめ記事
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
JS, txt, アクセス, あと, カウント, こと, これ, サーバー, そう, ところ, トップページ, ファイル, プッシャー, ブロック, ヘッドレスブラウザ, ボット, もの, よう, レンタル, ロボット, 一つ, 今後, 以前, 使用, 処理, 変更, 対応, 巡回, 当分, 放置, 明日, 最初, 構築, 機能, 正直, 現状, 結果, 表示, 見分け, 規約, 記事, 課題, 負荷, 追加, 違反, 間隔, 閲覧,

コメントを残す