Discuss Scratch
- Discussion Forums
- » 日本語
- » Scratch APIに対して理解を深めるトピック
- KRTSD0823
-
100+ posts
Scratch APIに対して理解を深めるトピック
メッセージ内容を取得するAPIを開くと認証されていない(訳)と表示されたんですが、いつも利用させていただいているものにメッセージを表示してくれる機能があり、どうやっているのかと思い中身を見ると、ヘッダーにxTOKENというパラメータがありました。
このxTOKENというものは一体何でしょうか?教えると危険なのでしょうか?
このxTOKENというものは一体何でしょうか?教えると危険なのでしょうか?
- tabakenn
-
100+ posts
Scratch APIに対して理解を深めるトピック
x-token があれば、非公開プロジェクトの閲覧ができます。(あとはプロジェクトの書き換えとかもできるらしいので絶対に教えてはダメ
(x-csrftoken というのもありますが関係ない
(x-csrftoken というのもありますが関係ない
- Catapult-
-
100+ posts
Scratch APIに対して理解を深めるトピック
#347の補足
Scratch APIで必要な主な認証情報 (基本秘密にしておくもの) は、
1. scratchcsrftoken
2. scratchsessionsid
3. token(x-token)
4. 個々のプロジェクトのproject_token
があります。
1は通信が正常に行われているか、というものです。
2は同じ端末から自動でログインする際に使われるものです。これをブラウザのcookieから消すと、ログアウト状態になります。
3はアカウントを判別する際に使います。
これらをリクエストヘッダに加えたり、cookieとして含めることで、限られたユーザーのみ閲覧できる情報を取得できます。
1~3の取得の仕方は以下の通りです。
まずログアウト状態から
にGETすると、応答Cookieとして1のscratchcsrftokenが返ってきます。
次に
にユーザー名、パスワードなどをPOST(cookieに1を含めておく)してログインすると、レスポンスから3のtokenが得られます。また、応答Cookieとして2のscratchsessionsidが返ってきます。
他にも注意すべき点として、ヘッダーにやなどを含めなければブロックされる場合があります。
API周りは文書が少ないので、ブラウザのデベロッパーツールのタブを見ながら目的の動作をし、
・メソッド
・リクエストボディ
・送信Cookie
などを確認するとよいです。
Scratch APIで必要な主な認証情報 (基本秘密にしておくもの) は、
1. scratchcsrftoken
2. scratchsessionsid
3. token(x-token)
4. 個々のプロジェクトのproject_token
があります。
1は通信が正常に行われているか、というものです。
2は同じ端末から自動でログインする際に使われるものです。これをブラウザのcookieから消すと、ログアウト状態になります。
3はアカウントを判別する際に使います。
これらをリクエストヘッダに加えたり、cookieとして含めることで、限られたユーザーのみ閲覧できる情報を取得できます。
1~3の取得の仕方は以下の通りです。
まずログアウト状態から
https://scratch.mit.edu/csrf_token/
次に
https://scratch.mit.edu/accounts/login/
他にも注意すべき点として、ヘッダーに
X-Requested-With: XMLHttpRequest
Referer: https://scratch.mit.edu/
API周りは文書が少ないので、ブラウザのデベロッパーツールのタブを見ながら目的の動作をし、
・メソッド
・リクエストボディ
・送信Cookie
などを確認するとよいです。
- ito-noizi
-
100+ posts
Scratch APIに対して理解を深めるトピック
ちなみに、sessionidをheaderに入れてにユーザー名、パスワードなどをPOST(cookieに1を含めておく)してログインすると、レスポンスから3のtokenが得られます。https://scratch.mit.edu/accounts/login/
https://scratch.mit.edu/session
- KRTSD0823
-
100+ posts
Scratch APIに対して理解を深めるトピック
質問です。
headersもありますね…APIの知識は乏しいので色々と教えてもらいたいです。
Javascriptを主に使っているんですが、ユーザ名とパスワードをPOSTというのは、fetchの場合はbodyに含めるといいのですか?キー?がわかりませんがすみませんキーは関係ないですねにユーザー名、パスワードなどをPOST(cookieに1を含めておく)https://scratch.mit.edu/accounts/login/
headersもありますね…APIの知識は乏しいので色々と教えてもらいたいです。
Last edited by KRTSD0823 (Feb. 26, 2024 12:40:51)
- gucha_gucha
-
100+ posts
Scratch APIに対して理解を深めるトピック
#351
pythonを使った方がいいでしょう。pythonのrequests.post関数で(メゾット名間違ってるかも)アクセスするのをおすすめします。pythonはjavascriptと書き方が似ているのでよかったら学んでみてください。
pythonを使った方がいいでしょう。pythonのrequests.post関数で(メゾット名間違ってるかも)アクセスするのをおすすめします。pythonはjavascriptと書き方が似ているのでよかったら学んでみてください。
- ito-noizi
-
100+ posts
Scratch APIに対して理解を深めるトピック
キー?がわかりませんがすみませんキーは関係ないですねもし、ブラウザのJavaScriptを使っているのなら、「開発者ツール」の「ネットワークタブ」を開いて、ログインして、そのリクエストのfetchをコピーして、色々試してみると良いでしょう。 Javascriptを主に使っているんですが、ユーザ名とパスワードをPOSTというのは、fetchの場合はbodyに含めるといいのですか?
headersもありますね…APIの知識は乏しいので色々と教えてもらいたいです。
また、async,awaitの使い方や、fetchリクエストの書き方をある程度理解していないと難しいと思います。検索や、ChatGPTなんかを駆使して頑張ってみてください。
- KRTSD0823
-
100+ posts
Scratch APIに対して理解を深めるトピック
Pythonにしたところで、何を送るかが分からなければ意味がありません。 pythonのrequests.post関数で(メゾット名間違ってるかも)アクセスするのをおすすめします。
一度書いた文章に追記したので、分かりにくい部分があるかもしれません。
- KRTSD0823
-
100+ posts
Scratch APIに対して理解を深めるトピック
実際に中身を見た方がいいんですね。ご回答ありがとうございます。 「開発者ツール」の「ネットワークタブ」を開いて、ログインして、そのリクエストのfetchをコピーして、色々試してみると良いでしょう。
検索や、ChatGPTなんかを駆使して頑張ってみてください。
- gucha_gucha
-
100+ posts
Scratch APIに対して理解を深めるトピック
#354
おっとすみません。pythonでこの様なコードを書くといいです。
from requests import post as p
#シャープはjavascriptで言う//です
#こうすることでrequests.postをpと簡略化できます
p('https://scratch.mit.edu/login/ ‘,data={
username: ’ユーザー名',
password: ‘パスワード’
});
#https://scratch.mit.edu/login/ にユーザー名とパスワードをPOSTしています。
でできます。
おっとすみません。pythonでこの様なコードを書くといいです。
from requests import post as p
#シャープはjavascriptで言う//です
#こうすることでrequests.postをpと簡略化できます
p('https://scratch.mit.edu/login/ ‘,data={
username: ’ユーザー名',
password: ‘パスワード’
});
#https://scratch.mit.edu/login/ にユーザー名とパスワードをPOSTしています。
でできます。
Last edited by gucha_gucha (Feb. 27, 2024 09:48:23)
- takenokodomo
-
6 posts
Scratch APIに対して理解を深めるトピック
スクラッチのデータをAPIで外に持っていくのではなく、スクラッチの中に外のデータを持ってきて使うことってできるんですか?
他の人のプロジェクト見てると外部からのデータを利用しているようなものもあったのですがやり方がわからないです。
他の人のプロジェクト見てると外部からのデータを利用しているようなものもあったのですがやり方がわからないです。
- tabakenn
-
100+ posts
Scratch APIに対して理解を深めるトピック
クラウド変数を利用すれば、スクラッチのWebページ同士でデータをやり取りできるので…
自分がいつも画面に張り付いて外部のデータを入力し続ければ、スクラッチの中で外部データを使えます。
これを自動化することもできます。
自分がいつも画面に張り付いて外部のデータを入力し続ければ、スクラッチの中で外部データを使えます。
これを自動化することもできます。
- KRTSD0823
-
100+ posts
Scratch APIに対して理解を深めるトピック
回答済みですが、検索すると出てくると思います。 少しずれているかもしれませんが、PUTとPOSTの違いを教えてください。
- MINTO_905
-
25 posts
Scratch APIに対して理解を深めるトピック
ScratchAPIで、あるユーザーのプロジェクトがお気に入りされた数の合計や、見られた数の合計を調べることはできますか?
- ito-noizi
-
100+ posts
Scratch APIに対して理解を深めるトピック
ScratchAPIから直接は調べることはできませんがそのユーザーのプロジェクトの調べたいものを足していけばできます。