这个教程是我之前看了论坛一位分析ios抖音无水印教程试着按照他的思路来做的,所以还是要先谢谢大佬的思路,不然我也写不出来
我觉得大家如果点进来了大多数都是会配置手机端抓包和使用的,废话我就不多说了。
首先打开手机上的皮皮虾APP 随便找一个视频
然后选择复制链接
这时候我们放到浏览器打开 我这个复制的短链是https://h5.pipix.com/s/Ceo5vU/
在浏览器打开的同时去看电脑上FD的请求:我红色箭头标出的地方可以看出在浏览器打开以后跳转的是一个长地址,同时我们找到这个链接发现response是一个302也就是重定向
在重定向的headers里面都是有一个location的用来指示他要跳转的地址是哪里
接着我们再去找一些有关json结构的返回信息,同样在这个请求里面我们发现在json信息处会找到有关视频的介绍 描述 一些水印图片地址 【皮皮虾好像也是和抖音一个公司的吧 他们家套路基本就是这样】
这个地址https://h5.pipix.com/bds/webapi/item/detail/?item_id=6740623460659108107&source=share 后面携带的参数可以看到是一个视频id,而这个id可以在重定向的url里面用正则或者其他方法匹配出来,携带上去发送请求就可以得到json信息了,后面的source可以不携带。
由于里面json信息结构很简单就不做阐述,之前大佬那个抖音如果获取了视频地址没有带上手机端的UA视频链接会播放不了,所以这里建议大家都携带一个手机UA去访问/下载
最后贴一下代码吧,方便大家直观分析一下,代码写的垃圾,还请不要嫌弃
[Python] 纯文本查看 复制代码 #coding:utf-8
import requests,os,json,re,sys
class PipiXiaMarkDelectMain:
def __init__(self):
self.Match_ShareLink_Rule = "h5.pipix.com"
self.Match_ShareId_Rule = r"item/[0-9]+"
self.Headers = {"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/15E148 Safari/604.1"}
self.DetailPipiApi = "https://h5.pipix.com/bds/webapi/item/detail"
self.VideoPath = "PiPiXiaVideoDelectMarkFloder"
IsVideoPath_In = os.path.exists(self.VideoPath)
if IsVideoPath_In == False:
os.mkdir(self.VideoPath)
def GetPipiXiaRedirectsLink(self,CopyLink):
LinkStr = CopyLink
IsPiHost = re.search(self.Match_ShareLink_Rule,LinkStr)
Pi_Session = requests.session()
if IsPiHost != None:
Redirect_Pi_Url = requests.get(LinkStr,headers=self.Headers,allow_redirects=False).headers["Location"]
ShareId = re.findall(self.Match_ShareId_Rule,Redirect_Pi_Url)[0].replace("item/","")
GetJsonParams = {"item_id":ShareId}
ResponeUnicode = Pi_Session.get(self.DetailPipiApi,params=GetJsonParams,headers=self.Headers).text
ResponeDict = json.loads(ResponeUnicode)
VideoWithOutMark_Link = ResponeDict["data"]["item"]["video"]["video_fallback"]["url_list"][1]["url"]
VideoDescriPtion = ResponeDict["data"]["item"]["comments"][0]["item"]["content"]
if VideoDescriPtion == "":
VideoDescriPtion = ShareId
VideoInfoList = [VideoWithOutMark_Link,VideoDescriPtion]
return VideoInfoList
else:
print("请输入合法链接")
sys.exit(0)
def DownPiPiXiaVideo(self):
LinkStr = input("请输入皮皮虾链接:")
VideoInfo = self.GetPipiXiaRedirectsLink(LinkStr)
VideoName = VideoInfo[1]
VideoLinkUrl = VideoInfo[0]
VideoByteStream = requests.get(VideoLinkUrl,headers=self.Headers).content
VideoFileName = self.VideoPath + "\\" + VideoName + ".mp4"
with open(VideoFileName,"wb") as VideoFile:
VideoFile.write(VideoByteStream)
print("下载完成")
while 1:
X = PipiXiaMarkDelectMain()
X.DownPiPiXiaVideo()
|