YuzuRyo61 / Misskey.py

The Misskey API library for Python. Misskey is made by syuilo. 🐡( '-' 🐡 )hug punch!!!!
https://misskeypy.readthedocs.io/ja/latest/
MIT License
81 stars 6 forks source link

[Feature] Changing user agent of api request #109

Closed CyberRex0 closed 1 year ago

CyberRex0 commented 1 year ago

Misskey.pyが利用しているrequestsのデフォルトユーザーエージェント (python-requests/XX.YY.ZZ)だと、WAFで制限を厳しくしているインスタンスでアクセス拒否されることがある。 普通のブラウザのように見せるか、開発者側でユーザーエージェントを設定できるようになるのが望ましい。

YuzuRyo61 commented 1 year ago

Misskey.pyはインスタンスを作成する(コンストラクタ)引数の中に、sessionという引数を設けています。

これはPythonライブラリのrequestsのSessionクラスを利用したもので、Misskey.pyはこれを利用してHTTP通信を行っています。 Sessionクラスのインスタンスのヘッダーに、ユーザーエージェントを指定し、それをMisskey.pyのコンストラクタに渡せば、Misskey.pyのユーザーエージェントをカスタマイズすることができます。

requestsのSessionクラスについては、以下のドキュメントをご参照ください。 https://requests.readthedocs.io/en/latest/user/advanced/#session-objects

以下はサンプルです。

from misskey import Misskey
import requests

# requestsのSessionクラスのインスタンスを作成
s = requests.Session()
# ユーザーエージェントを設定
s.headers.update({'User-Agent': 'Misskey.py/4.1.0'})

# Misskey.pyのインスタンスを作成
mk = Misskey('https://misskey.io', session=s)

# API通信処理
# ここで、カスタマイズされたrequestsのセッションで通信されます
meta = mk.meta()
print(meta)
CyberRex0 commented 1 year ago

sessionオプション完全に忘れてました。ありがとうございます。