mastodon-japan.net は、数々の独立したMastodonサーバーのうちのひとつです。サーバーに登録してFediverseのコミュニティに加わってみませんか。
こちらはMastodon Japan Server、日本居住および日本語話者向けの汎用サーバーです。 ただし日本国外居住者及び非日本語話者を除外するものではありません。ルール(利用規約)をご確認の上で平和に遊ぼう。

サーバーの情報

2.1K
人のアクティブユーザー

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: Hostname mismatch, certificate is not valid for 'files.mastodon-japan.net'. (_ssl.c:992)>

おや・・・ DNS 的な何かかなと思ってマシンを再起動してみたら、エラーが HTTP Error 403: Forbidden に変わった。

wget や curl では持ってこれているみたいだけど・・・

"certificate is not valid" ってあるから証明書かな

Webブラウザから files.mastodon-japan.net にアクセスしても特に証明書に問題ないみたい。

自分の書いた Python のプログラムがエラー情報をあんまり出力してくれていないので、そのへんを修正してもうちょっと調査してみるかな。

「traceback は システムトレースを取得するための標準ライブラリです」

Python のエラー出力 - Qiita qiita.com/puchi2121/items/3983

QiitaPython のエラー出力 - QiitaPython のエラー出力ついて備忘録を残します。 記事内のコードは Python3.8.6 で動作確認しています。 Python の例外についてもっと詳しく知りたい方は 公式ドキュメント も併せてご参照ください。 例外オブジェクト...

画像のIPアドレスを whois してみると Cloudflare なので、Python からのアクセスを Cloudflare が HTTP Error 403 Forbidden にしているような気がする。

なんだか良くない解決策しか出てこなさそう・・・

nilab

Mastodon に投稿した画像について、Python の urllib.request を使って Cloudflare からダウンロードしようとすると、HTTP Error 403 Forbidden になってしまう。
curl で Cloudflare からダウンロードするのはエラーにならない。
試しに urllib.request のユーザーエージェント文字列を curl のものに置き換えてみたらダウンロードできるようになった。

# こんな感じ
headers = {'User-Agent' : 'curl/7.88.1'}
req = urllib.request.Request(url, None, headers)
with urllib.request.urlopen(req) as file:

Cloudflare は user-agent だけ見て 403 Forbidden にしているんだろうか・・・

自分が Mastodon に投稿した画像を無事に取り込むことができている(∩´∀`)∩

nilog: 無いログは振れない。 nilab.info/nilog/

www.nilab.infonilog: 無いログは振れない。nilog: 無いログは振れない。