質問: 下記のようなサイトでインスタのURlを貼り付けて「抜き出し」を押すと、サーバーのURLのようなものが取得できると思います。 https://awakest.net/instagram-image-save/ 例 https://www.instagram.com/p/CCC8rUfB_Ez/?utm_source=ig_web_copy_link を入れると https://scontent-nrt1-1.cdninstagram.com/v/t50.2886-16/106587554_617039228916198_8908515426947992526_n.mp4?_nc_ht=scontent-nrt1-1.cdninstagram.com&_nc_cat=106&_nc_ohc=nhZhn5yhCYUAX8V3Vr-&oe=5EFD2DE3&oh=fb83f6230b258d139a73bc4fd7fae606 のurlが出来てます。 この出てきたURLを押すとwebサイトで動画を見ることができ、右クリックなどで名前を付けてダウンロードをすることが出来ます。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b1b4b6c828645e537790bf92051ef41d.png) これをpythonで行いたいのですが、初心者なもので何を調べてたら良いのか分からなくなりました。 サーバーのURL?のようなものはスクレイピングで取得することができたのですが、ここからはどのな方法なのでしょうか? ``` ffmpeg.input('url').output('path').run() ``` に入れてやってみたのですが Server returned 403 Forbidden (access denied) でダメでした。 何を勉強したら良いなどの手がかりだけでも欲しいですm(_ _)m 追記 回答いただいた、cookieやJSを探したのですが、分かりませんでした。 http://v16m-default.akamaized.net/5af56636ff6682a8f8dea34defd3296d/5efb342c/video/tos/useast2a/tos-useast2a-v-0053/ace972e6f19c455d9b9eaf701c8c36d2/?a=0&br=200&bt=100&cr=0&cs=0&dr=0&ds=5&er=&l=20200630064548010189085203368B420D&lr=&mime_type=video_mp4&qs=5&rc=M2w1ZmxtcXM6ajMzNmczM0ApOjM7Nmg3OzszN2loMzU5OWc2ZmdocF5gc2dfLS1eLjZzczVeXjU0XzQxNV81NDBjNDE6Yw%3D%3D&vl=&vr= このurl何ですが、どのようなすれば良いでしょうか?
回答: > > Server returned 403 Forbidden (access denied) > > > ということはアクセス権の問題です リクエストには URL だけでなく、認可のためのなんらかの情報を含める必要があります ``` ffmpeg.input('url').output('path').run() ``` 上記の `url` がブラウザでは閲覧可能であれば、 開発者ツールの [Network] タブを開いた状態のブラウザで上記の `url` をリクエストしてみて 開発者ツールの [Network] タブに表示されたリクエストをクリック → [Headers] タブで [Request Headers] の内容を観察します 一概には言えませんが、例えば `cookie:` という項目に文字列があれば、 その文字列を使って次のコードでダウンロードできるかもしれません: ``` # 1. ダウンロードしたいメディアの URL を設定してください url_media = 'https://' # 2. 出力先の URL を設定してください path_to_output = '/path/to/output.mp4' # 3. Cookie の文字列を設定してください cookies_string = '' stream = ffmpeg.input(url_media , headers=f'Cookie: {cookies_string}\r\n', copytb='1') stream = ffmpeg.output(stream, str(path_to_output), f='mp4', c='copy') ffmpeg.run(stream) ``` これでうまくいかない場合は、 cookie の文字列をプログラムで動的に生成する必要があったり、 さらに他の内容をリクエストに追加する必要があります メディアの URL のリクエストにどのような情報を追加する必要があるかは、 開発者ツールで JavaScript のコードを読んでいき、 メディアの URL にリクエストしている箇所を確認することで解析できます