Discuss Scratch

KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

メッセージ内容を取得するAPIを開くと認証されていない(訳)と表示されたんですが、いつも利用させていただいているものにメッセージを表示してくれる機能があり、どうやっているのかと思い中身を見ると、ヘッダーにxTOKENというパラメータがありました。
このxTOKENというものは一体何でしょうか?教えると危険なのでしょうか?
tabakenn
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

x-token があれば、非公開プロジェクトの閲覧ができます。(あとはプロジェクトの書き換えとかもできるらしいので絶対に教えてはダメ
(x-csrftoken というのもありますが関係ない
Catapult-
Scratcher
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の取得の仕方は以下の通りです。

まずログアウト状態から
https://scratch.mit.edu/csrf_token/
にGETすると、応答Cookieとして1のscratchcsrftokenが返ってきます。
次に
https://scratch.mit.edu/accounts/login/
にユーザー名、パスワードなどをPOST(cookieに1を含めておく)してログインすると、レスポンスから3のtokenが得られます。また、応答Cookieとして2のscratchsessionsidが返ってきます。

他にも注意すべき点として、ヘッダーに
X-Requested-With: XMLHttpRequest
Referer: https://scratch.mit.edu/
などを含めなければブロックされる場合があります。

API周りは文書が少ないので、ブラウザのデベロッパーツールのタブを見ながら目的の動作をし、
・メソッド
・リクエストボディ
・送信Cookie
などを確認するとよいです。
KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#348
詳しい解説をありがとうございます。
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

Catapult- wrote:

https://scratch.mit.edu/accounts/login/
にユーザー名、パスワードなどをPOST(cookieに1を含めておく)してログインすると、レスポンスから3のtokenが得られます。
ちなみに、sessionidをheaderに入れて
https://scratch.mit.edu/session
GETするとuserのtokenを見ればxtokenを取得できます。
KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

質問です。

Catapult- wrote:

https://scratch.mit.edu/accounts/login/
にユーザー名、パスワードなどをPOST(cookieに1を含めておく)
Javascriptを主に使っているんですが、ユーザ名とパスワードをPOSTというのは、fetchの場合はbodyに含めるといいのですか?キー?がわかりませんがすみませんキーは関係ないですね
headersもありますね…APIの知識は乏しいので色々と教えてもらいたいです。

Last edited by KRTSD0823 (Feb. 26, 2024 12:40:51)

gucha_gucha
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#351
pythonを使った方がいいでしょう。pythonのrequests.post関数で(メゾット名間違ってるかも)アクセスするのをおすすめします。pythonはjavascriptと書き方が似ているのでよかったら学んでみてください。
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

KRTSD0823 wrote:

Javascriptを主に使っているんですが、ユーザ名とパスワードをPOSTというのは、fetchの場合はbodyに含めるといいのですか?キー?がわかりませんがすみませんキーは関係ないですね
headersもありますね…APIの知識は乏しいので色々と教えてもらいたいです。
もし、ブラウザのJavaScriptを使っているのなら、「開発者ツール」の「ネットワークタブ」を開いて、ログインして、そのリクエストのfetchをコピーして、色々試してみると良いでしょう。
また、async,awaitの使い方や、fetchリクエストの書き方をある程度理解していないと難しいと思います。検索や、ChatGPTなんかを駆使して頑張ってみてください。
KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

gucha_gucha wrote:

pythonのrequests.post関数で(メゾット名間違ってるかも)アクセスするのをおすすめします。
Pythonにしたところで、何を送るかが分からなければ意味がありません。
一度書いた文章に追記したので、分かりにくい部分があるかもしれません。
KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

ito-noizi wrote:

「開発者ツール」の「ネットワークタブ」を開いて、ログインして、そのリクエストのfetchをコピーして、色々試してみると良いでしょう。
検索や、ChatGPTなんかを駆使して頑張ってみてください。
実際に中身を見た方がいいんですね。ご回答ありがとうございます。
gucha_gucha
Scratcher
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しています。

でできます。

Last edited by gucha_gucha (Feb. 27, 2024 09:48:23)

gucha_gucha
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

少しずれているかもしれませんが、PUTとPOSTの違いを教えてください。
takenokodomo
Scratcher
6 posts

Scratch APIに対して理解を深めるトピック

スクラッチのデータをAPIで外に持っていくのではなく、スクラッチの中に外のデータを持ってきて使うことってできるんですか?
他の人のプロジェクト見てると外部からのデータを利用しているようなものもあったのですがやり方がわからないです。
tabakenn
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

クラウド変数を利用すれば、スクラッチのWebページ同士でデータをやり取りできるので…
自分がいつも画面に張り付いて外部のデータを入力し続ければ、スクラッチの中で外部データを使えます。
これを自動化することもできます。
KRTSD0823
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

gucha_gucha wrote:

少しずれているかもしれませんが、PUTとPOSTの違いを教えてください。
回答済みですが、検索すると出てくると思います。
kannbo
Scratcher
5 posts

Scratch APIに対して理解を深めるトピック

失礼します

フォロワー数やフォロー数を求めるにはどのようにしますか
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

#294 より、

ito-noizi wrote:

このページを見るとわかるように、
https://scratch.mit.edu/users/ユーザー名/followers/
の「box-head h2」で、「()」に囲われている部分がフォロワー数です。
で、フォロワー数をしれます。フォロー数は
https://scratch.mit.edu/users/ユーザー名/following/
です。
MINTO_905
Scratcher
25 posts

Scratch APIに対して理解を深めるトピック

ScratchAPIで、あるユーザーのプロジェクトがお気に入りされた数の合計や、見られた数の合計を調べることはできますか?
ito-noizi
Scratcher
100+ posts

Scratch APIに対して理解を深めるトピック

ScratchAPIから直接は調べることはできませんがそのユーザーのプロジェクトの調べたいものを足していけばできます。
SANRAITONING
Scratcher
4 posts

Scratch APIに対して理解を深めるトピック

質問です。
pythonでクラウド変数を取得するにはどうしたらよいのでしょうか?

Powered by DjangoBB