Build偽装UAをWAFで弾いた1か月 — 遮断した403も解析に残り、スキャンは本物と同じ名前に移ったAI系UAを騙った認証情報スキャンを Cloudflare の WAF で遮断した。1か月後に見たら、遮断した403も解析にそのまま計上されていて、スキャンは145件から991件に増えていた。弾いた名前は捨てられ、本物と同じ ChatGPT-User / Amazonbot に移っていた実測と、そこから採った二段構え。
BuildAIクローラーのUAは名乗るだけ — 検証済みだけ数えたら本物468件・偽装991件だったGPTBot や ChatGPT-User を名乗るリクエストは、その UA を書けば誰でも作れる。Cloudflare の verifiedBotCategory とサイトマップ実在パスの2軸で分けたら、8日間で本物の記事取得は468件、認証情報スキャンは991件だった。同じ UA が検証済みと未検証に割れる実測と、集計スクリプトの実装。
Buildクロス投稿は重複コンテンツか — 消す前に一致率を測ったら散文の一致は3行だったZenn / Qiita / dev.to へのクロス投稿を重複コンテンツと疑って外部記事を消しかけたが、行単位で測ったら一致795行のうち762行はコードブロックで、散文の一致は393行中3行だった。測り方と、canonical を指定できるプラットフォームとできないプラットフォームの整理。
BuildGoogleスプレッドシートの .xlsx は Excel で静かに壊れる — 203セルを動的配列なしで書き直すGoogleスプレッドシートから .xlsx で書き出すと、ARRAYFORMULA / FILTER / SORTN / QUERY が Excel に存在しないまま残る。しかも外側の IFERROR が例外を握りつぶすので、画面にはエラーではなく「該当なし」が出る。openpyxl で壊れたセルを数え、ヘルパー列+INDEX/MATCH に書き直して Excel 2016 でも動くようにした記録。