🤮

[郵便局API] 郵便番号・デジタルアドレス for Biz の仕様が変わった気がするので備忘録

に公開

郵便番号・デジタルアドレス for Biz を思い出して

みんな忘れているかもしれないので貼っておきます。詳細は下記ページを参照してください。
https://guide-biz.da.pf.japanpost.jp/api/

検証用APIで動作検証

ご存じかもしれませんが、こちらのAPIは利用するには「ゆうID」の登録と、事業者としての登録がないと利用できません。というわけで、会社にお伺いを立てて、法人登録させてもらい動作検証ページを作成しておりました。

ちなみにCORS制約の都合上、フロントから自前で作成したPHPファイルを介してAPIにリクエスト送信するしくみで検証できました。6月まではね。

通信できなくなった

7月に入ってしばらくして、先週ひさびさに動作確認を行ったところ、認証トークンの取得に失敗する。どうして? 先月までは動いていたのに。改修もしていないのに。

エラーコードは403、そもそもトークンの取得ができないというか、APIに拒絶されているではないか。

原因を突き止めた

原因は私のPHPのコードが悪かった。curlのcurl_setoptの記述が不十分だったようです。

url_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Accept: application/json',
    'User-Agent: curl/7.81.0' // ここを追記したらレスポンスが返ってきた
]);

普段から User-Agent の記述をすっ飛ばしている報いでした。こうしてさらっと今回の原因を書いておりますが、突き止めるのに2営業日かかりました。まぁ困るのは自分だけなのでいいのですが。

仕様変更?

でもこれって、6月までは User-Agent の記述なしでも動いていたわけで、郵便局さんによるステルス仕様変更ですか? 言ってくれないと困ります><

追記: 2025/07/18

郵便局からの回答がありました。やはり仕様変更していたそうです。
そもそも、本番用APIでははじめから User-Agent がない場合はAWSからブロックされる仕様だったらしい。ただ、私はまだ検証用APIしか触れていなかったので知らなかった。

そんなわけで、軽微な仕様変更として、検証用APIにも本番用APIと同等のWAFを導入したそうです。

これから検証用APIで動作検証する方、User-Agent は忘れずに。以上。

Discussion