我正在尝试学习 html 和 javascript,我给自己布置了这个小任务,我登录了 Instagram,我想发出上传图片的 Post 请求。我分析了上传的工作原理,并试图弄清楚如何完成任务。
要手动上传图片,请执行以下步骤:
- 点击上传按钮(是
<span>
不成表格) - 文件管理器 popus 和用户选择图像
- 您被重定向到另一个页面并且图片已上传
点击上传按钮后 post
reuqest 提高到 https://www.instagram.com/rupload_igphoto/fb_uploader_<image_id>
,在请求有效负载中有图像二进制数据,并且有一些自定义 header 指定图像 ID 和其他图像数据。
我正试图找到一种方法来做同样的事情。
我想我可以在 html 页面中添加自定义 form
发送 POST
请求 rupload_igphoto/fb_uploader_<image_id>
,通过这种方式我可以保留所有的 cookie 和 session 数据,但我不知道如何更改请求 header 并作为请求发送 payload
图像二进制数据。
如果我用 network
分析请求我可以看到开发工具
Inside the request parameters:
- request payload: "ß\µÙº¦ÙÆëºÀF·GÇ&ØËUwp8çÓ4sÚdSkðEªì®[|<§îÿ...." ( that are the binary datas of the image)
Request custom headers:
- X-Entity-Length: 370266
- X-Entity-Name: fb_uploader_1577544947097
- X-Instagram-Rupload-Params
:{"media_type":1,"upload_id":"1577544947097","upload_media_height":1080,"upload_media_width":1080}
假设我创建了一个新的 form
在 istagram 窗口内的 Node ,
<form action="rupload_igphoto/fb_uploader_<image_id>" method="POST" style="z-index: 10">
</form>
并且我知道图像二进制数据,如何将 header 添加到请求并将二进制数据添加到有效负载?
最佳答案
您不能向表单添加标题,read more .
您可以使用 XHR用 JS 发送数据,但 Instagram 很可能有工具来阻止这种尝试(事实上它不是一种形式可能是其中之一)。
这样做的原因是为了限制上传量,避免把平台变成图片备份服务。如果他们希望用户能够以编程方式上传,他们会提供一个带有凭据和内容的 API。
也就是说,如果您足够坚持,您仍然可以做到,请记住,您在途中会遇到一些奇怪的问题。
关于javascript - 如何使用发布请求从浏览器上传图像 Instagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59512315/