链接https://v.douyin.com/ygSsq1X8cH8/解析结果:
{ "code": 0, "msg": "获取成功", "data": { "author": { "name": "赵国豪", "avatar": "https://p3.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-c9aec8xkvj_5aa59443a73a464fae4982aaeb28143e.jpeg?from=327834062", "id": "zgh1438", "signature": "《无渊烬》作者“我葬人间十万魂 无人葬我心头雪”\n“无团队 只拍自己想拍的 写自己想写的”\n生活号@赵国豪。" }, "music": { "title": "@赵国豪创作的原声一赵国豪", "author": "赵国豪", "duration": 63, "url": "" }, "count": { "like": 139293, "comment": 1780, "share": 13872, "collect": 4726 }, "desc": "“别回头 我一直都在” #反派", "cover": "https://p26-sign.douyinpic.com/tos-cn-i-0813c001/ogxotHASAAAfA9iHgEFTFMDDbfPXaBzEAACAXI~tplv-dy-resize-walign-adapt-aq:720:q75.webp?lk3s=138a59ce&x-expires=1748098800&x-signature=lcvQ8GCc3mKTliJN8t%2B7Va%2Bbhvk%3D&from=327834062&s=PackSourceEnum_DOUYIN_REFLOW&se=false&sc=cover&biz_tag=aweme_video&l=20250510231008D0EEC9C659F7DB51ABB4", "tag": "#反派 " }, "type": "视频" }
这个可以免去所有验证,根本原理是解析html嵌套的json数据
写的比较烂,其实能运行就行(bushi
代码如下:
<?phpheader("Content-Type:application/json;");$url = $_GET["url"]?:exit(json_encode(array("code"=>-1,"msg"=>"未输入url参数"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));//echo loc("https://www.douyin.com/aweme/v1/play/?video_id=".$id[0]);$url = getUrl(loc($url),"ttwid=1%7Chf7h6KY-9QJzBZPLTeMn9TvQ3FjVPiUOGO1TvdN2ypk%7C1727744584%7Ca13c6d514bfb4de5703116a1278df7d0e7ac2331a3ea22dc5a6d5a5416916944;_tea_utm_cache_1243={%22utm_source%22:%22copy%22%2C%22utm_medium%22:%22android%22%2C%22utm_campaign%22:%22client_share%22}");//preg_match_all('/?video_id=(.*?)&/', $url, $id);$position = strpos($url, "window._ROUTER_DATA = ")+22;$substring = substr($url, $position);$position2 = strpos($substring, "}</script>")+1;$substring2 = substr($substring, $position2);$substring3 = str_replace($substring2,"",$substring);$json = json_decode($substring3,true);$item1 = $json["loaderData"]["video_(id)/page"];$item2 = $json["loaderData"]["note_(id)/page"];if($item1){$item=$item1["videoInfoRes"]["item_list"][0];$desc = $item["desc"];$name = $item["author"]["nickname"];$signature = $item["author"]["signature"];$video = loc("https://www.douyin.com/aweme/v1/play/?video_id=".$item["video"]["play_addr"]["uri"]."&ratio=1040p");$cover=$item["video"]["cover"]["url_list"][0];$avatar=$item["author"]["avatar_medium"]["url_list"][0];$unique_id=$item["author"]["unique_id"];$duration=$item["music"]["duration"];$music_author=$item["music"]["author"];$title=$item["music"]["title"];$text_extra=getText_Extra($item["text_extra"]);$like=$item["statistics"]["digg_count"];$comment=$item["statistics"]["comment_count"];$share=$item["statistics"]["share_count"];$collect=$item["statistics"]["collect_count"];echo json_encode(array("code"=>0,"msg"=>"获取成功","data"=>array("author"=>array("name"=>$name,"avatar"=>$avatar,"id"=>$unique_id,"signature"=>$signature),"music"=>array("title"=>$title,"author"=>$music_author,"duration"=>$duration,"url"=>""),"count"=>array("like"=>$like,"comment"=>$comment,"share"=>$share,"collect"=>$collect),"desc"=>$desc,"cover"=>$cover,"tag"=>$text_extra),"type"=>"视频"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);}else if($item2){$item=$item2["videoInfoRes"]["item_list"][0];$desc = $item["desc"];$name = $item["author"]["nickname"];$signature = $item["author"]["signature"];//$video = "https://www.douyin.com/aweme/v1/play/?video_id=".$item["video"]["play_addr"]["uri"]."&ratio=1040p";$music = $item["video"]["play_addr"]["uri"];$cover=$item["video"]["cover"]["url_list"][0];$avatar=$item["author"]["avatar_medium"]["url_list"][0];$unique_id=$item["author"]["unique_id"];$duration=$item["music"]["duration"];$music_author=$item["music"]["author"];$title=$item["music"]["title"];$text_extra=getText_Extra($item["text_extra"]);$like=$item["statistics"]["digg_count"];$comment=$item["statistics"]["comment_count"];$share=$item["statistics"]["share_count"];$collect=$item["statistics"]["collect_count"];echo json_encode(array("code"=>0,"msg"=>"获取成功","data"=>array("author"=>array("name"=>$name,"avatar"=>$avatar,"id"=>$unique_id,"signature"=>$signature),"music"=>array("title"=>$title,"author"=>$music_author,"duration"=>$duration,"url"=>$music),"count"=>array("like"=>$like,"comment"=>$comment,"share"=>$share,"collect"=>$collect),"desc"=>$desc,"cover"=>$cover,"tag"=>$text_extra,"images"=>getImage($item["images"])),"type"=>"图集"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);}function loc($url){$loc = get_headers($url, true)['Location'][0];return $loc;}function getUrl($url,$cookie){$ch = curl_init();curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (Linux; Android 13; V2166BA Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.71 MQQBrowser/6.2 TBS/047205 Mobile Safari/537.36 V1_AND_SQ_9.0.75_6808_YYB_D QQ/9.0.75.17920 NetType/4G WebP/0.3.0 AppId/537230737 Pixel/1080 StatusBarHeight/100 SimpleUISwitch/0 QQTheme/1000 StudyMode/0 CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.90000004 AllowLandscape/false InMagicWin/0','Cookie:'.$cookie,'Host:www.iesdouyin.com'));curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);//curl_setopt($ch, CURLOPT_COOKIE,$cookie);$response = curl_exec($ch);curl_close($ch);return $response;}function getText_Extra($data){if(!$data||count($data)==0){return "";}else{$text="";foreach($data as &$item){$text.="#".$item["hashtag_name"]." ";}return $text;}}function getImage($data){if(!$data||count($data)==0){return null;}else{foreach($data as &$item){$array[]=$item["url_list"][0];}return $array;}}?>