百度好看视频http POST分析实现自动发视频

提示:如果你认为本文对你有帮助,请点一下关注.


如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

前言

前几天一个朋友让帮忙做一个好看视频自动上传的软件,分析了几个小时。主要难点在于

authorization如何获取,分析js的加密方法。还有百度的旋转验证码如何去验证。

本文将讲解一下上传一个视频的完整协议,以及其中使用的各个参数如何获取 如何加密。本文只分

析协议,你可以用你熟悉的语言实现。


一、登录

登录一般有2种方式:

  • POST登录请求
  • 携带cookie请求

我们使用的cookie的方式,这样就不用登录可以直接发送请求。具体实现可以从浏览器复制cookie,也可以在自己软件中调用ie webbrowser或者chromium登录后自动获取cookie。

二、协议分析

当我们在浏览器上传和发布视频时会看到一些的post请求和get请求,这里有几个请求是我们能用到的。

  1. https://dream.haokan.com/creator/pcvodtoken

请求返回的信息如下:

{
	'timestamp': 1684815801,
	'logid': '1401267629',
	'status': 0,
	'msg': 'success',
	'data': {
		'ak': '',
		'sk': '',
		'token': '',
		'mediaId': '',
		'video': {
			'mediaIdMode': 'hk-video-publish',
			'processModel': 'online_template_watermark',
			'fileNamePrefix': 'haokancreator_'
		},
		'videoUploadInfo': {
			'bucket': 'hk-video-publish',
			'bosobject': 'vod-gechgi84v43uhfhp/mda-pen67e4pdxf2kn.mp4',
			'mediaId': 'mda-pen67e6idxf2kn',
			'host': 'bj.bcebos.com'
		}
	}
}

为了方便观看,我把其中的一些参数的内容给删掉了。我们可以获取:ak、sk、token、bucket、bosobject、mediaId。这些是后面能用到的参数。

  1. https://bj.bcebos.com/v1/hk-video-publish/vod-gechgi84v43uhfhp/mda-pen67e6idxf2kn.mp4?uploads=

这个请求链接中的参数可以对应第一个请求返回的值去设置,请求返回的内容我们需要获取其中的uploadId值。但是要注意,这个请求的header信息中有几个关键部分要设置:

说明
x-bce-date当前的日期时间
x-bce-security-token第一个请求获取的token
authorization通过js获取的一段加密字符串

上面主要的参数是authorization,分析下他js代码的部分如下图

在这里插入图片描述

如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

上图是生成authorization的关键部分,里面还有一些调用的方法这里就不展示了,可自行跟进调试。我们直接说结论:通过分析看到:authorization实际上就是把一段字符串给通过sha256算法给做了2次加密,第一次加密是把SK作为密钥,把bce-auth-v1/ak/当前时间 (替换为实际参数) 作为加密内容。第二次加密把第一次加密的内容作为密钥,把上面提到的字符串作为内容加密,最终得到了authorization。上面提到的字符串如下:
POST
/v1/hk-video-publish/vod-gechgi84v43uhfhp/mda-pen6uqspqh63pi50.mp4
uploads=
content-length:0
content-type:video%2Fmp4
host:bj.bcebos.com
x-bce-date:时间
x-bce-security-token:toekn

上面字符替换为实际参数,实际上每行字符串是使用\n分隔,我上面为了方面展示就直接换行显示了

  1. https://bj.bcebos.com/v1/hk-video-publish/vod-gechgi84v43uhfhp/mda-pen74ed6n3ze6b9z.mp4?partNumber=1&uploadId=uploadId的值

这个是上传视频的请求,请求时put方式,请求同样需要第二个请求提到的那些header信息,请求返回我们需要获取其中的 etag参数

  1. https://bj.bcebos.com/v1/hk-video-publish/vod-gechgi84v43uhfhp/mda-pen75e1ymqtj4jbj.mp4?uploadId=uploadId的值

  2. https://dream.haokan.com/creator/pcarticlecacheupdate

通过上面链接获取其中返回值的id。至此上传视频相关的部分已经完成,下面是上传封面。
需要先请求上面的第一个请求不同的是请求参数mediatype=2

  1. https://bj.bcebos.com/v1/baidu-rmb-videopic-1/hk/2305/1684818779671008af0fea99526a94f27ed332b875e3cc4e8306.jpg

上面是上传封面的请求,同样是put请求,其中的参数同上传视频需要的参数差不多。至此准备工作都做好了 就开始发布了。

  1. https://dream.haokan.com/creator/pcpublish?channel=pcpublish

发布需要用的参数如下:

        "title": title,
        "desc": desc,
        "hkFeedCat": "",
        "copyrightName": "",
        "content": '{"title":"'+title+'","local":1,"videoName":"'+title+'.mp4","mediaId":"'+mediaId+'"}',
        "coverLayout": "one",
        "coverImages": '[{"src":"'+src+'"}]',
        "videoInfo": '{"mediaId":"'+mediaId+'","sourceBucket":"'+sourceBucket+'","sourceKey":"'+sourceKey+'","host":"bj.bcebos.com","duration":9.3,"byteSize":'+size+'}',
        "articleId": "",
        "topicList": "[]",
        "ideaCode": "",
        "feoType": "1",
        "ds": ds,
        "tk": tk,
        "positionLatLng": "{}",
        "cacheId": dataid,
        "goodsList": "[]",
        "stickers": "",
        "watermarkType": "0"


这些参数在上面那些请求中全部都有获取,这里就不一一讲解了。可以对上传返回信息做一个判断:如果msg=success则表示上传成功,如果msg为空则表示有旋转验证码,其他情况则直接显示msg中的内容(错误信息)


总结

文章中最后提到的旋转验证码,如果是自己的账号一般不会出现验证码,如果是购买的普通账号或者百度ck账号会出现验证码。因为篇幅问题,这里就不讲了后面在进行讲解。

如果有问题可以联系我**:https://gitee.com/xiaoyuren/gpt3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值