翻译一个JAVA版API解析

package com.demo;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;public class Testce {private static String url = "http://v.douyin.com/AaP8m6/";private static String [] DEVICEINFOS = {"iid=43619087057&device_id=57318346369","iid=74655440239&device_id=57318346369"};public static void main(String[] args) {parseVideoByLink(url);}public static void parseVideoByLink(String url) {String awemeId = getAwemeId(url);int api_n = 4; //控制每次取得的设备信息数量for(String s : getApis(4)){String req_url = s + awemeId;System.out.println("请求地址: " + req_url);String htmlText = reqPost(req_url);System.out.println(htmlText);}}/*** 生成api* @param api_n* @return*/private static List<String> getApis(int api_n){Map<String,String> version = versions(); //版本号List<String> apis = new ArrayList<>();List<String> rand_devices = new ArrayList<>();int devices_size = DEVICEINFOS.length; //实际设备信息条数int real_size = devices_size < api_n ? devices_size : api_n ; //最终获取的设备信息数量//获取随机设备信息for(int i =0 ; i <real_size ;i++){int rand = new Random().nextInt(devices_size) ;String rand_device = DEVICEINFOS[rand];if (rand_devices.contains(rand_device)) {continue;} else {rand_devices.add(rand_device) ;}}for(String k : version.keySet()){String  version_apis = "" ;for(String randDevice:rand_devices){version_apis = "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&"+randDevice+"&ac=wifi&channel=update&aid=1128&app_name=aweme&version_code="+k+"&version_name="+version.get(k)+"&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code="+k+"&resolution=1080*1920&dpi=480&update_version_code=2512&ts=1561136204&as=a1e500706c54fd8c8d&cp=004ad55fc8d60ac4e1&aweme_id=";}apis.add(version_apis);}return apis;}/*** 获取awmeId* @param link* @return*/private static String getAwemeId(String link) {String itemId = null;if (link.contains("http://v.douyin.com/")) {String html = reqGet(link);itemId = html.substring(html.indexOf("itemId:")  );itemId = itemId.substring(0  ,itemId.indexOf(","));itemId = itemId.substring(itemId.indexOf("\"")+1 ,itemId.lastIndexOf("\"") );System.out.println();System.out.println("itemId : " + itemId);} else if (link.contains("https://www.iesdouyin.com")) { //长链接}return itemId;}/*** 版本号* @return*/public static Map<String,String> versions(){Map<String,String> map = new HashMap<>();map.put("680","6.8.0");map.put("251","2.5.1");map.put("140","1.4.0");return map;}/*** post请求* @param url* @return*/public static String reqPost(String url) {//编码:UTF-8return send(url);}/*** 向指定 URL 发送POST方法的请求* @param url 发送请求的 URL* @return 所代表远程资源的响应结果*/public static  String send(String url) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("User-Agent", "okhttp/3.10.0.1");conn.setRequestProperty("Accept-Encoding", "utf-8");conn.setRequestMethod("GET");conn.setUseCaches(false);conn.setInstanceFollowRedirects(true);// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(3000);conn.setReadTimeout(3000);out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "UTF-8"), Boolean.FALSE);out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** get请求* @param url* @return*/public static String reqGet(String url) {//编码:UTF-8return httpGet(url,  "UTF-8",false);}/*** get请求* @param url* @return*/public static String httpGet(String url, String code,boolean flag) {System.out.println("GetPage: " + url);String content = null;HttpClient httpClient = new HttpClient();//设置headerif(flag){//httpClient.getParams().setParameter("Accept-Encoding", "utf-8" );//httpClient.getParams().setParameter("User-Agent", "okhttp/3.10.0.1");httpClient.getParams().setParameter(HttpMethodParams.STRICT_TRANSFER_ENCODING, "utf-8" );httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, "okhttp/3.10.0.1");}else{httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, "Mozilla/5.0 (Linux; Android 8.0.0; MI 6 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36");}GetMethod method = new GetMethod(url);try {int statusCode = httpClient.executeMethod(method);System.out.println("httpClientUtils::statusCode=" + statusCode);System.out.println(method.getStatusLine());content = new String(method.getResponseBody(), code);} catch (Exception e) {System.out.println("time out");e.printStackTrace();} finally {if (method != null) method.releaseConnection();method = null;httpClient = null;}return content;}}

抖音无水印解析API相关推荐

  1. php抖音跳转地址,PHP抖音无水印解析api

    输出标准的格式化了的json格式,ajax直接调用,调用地址/url=抖音地址 主要内容都输出了,status为1输出成功. ps:要网站输出视频必须支持https $url = @$_GET['ur ...

  2. PHP抖音无水印解析api

    输出标准的格式化了的json格式,ajax直接调用,调用地址/url=抖音地址 主要内容都输出了,status为1输出成功. ps:要网站输出视频必须支持https <?php $url = @ ...

  3. php 记事本源代码_抖音无水印解析PHP源码

    抖音无水印解析PHP源码 仅限学习使用 输出为标准的格式化json数据 ajax直接调用即可 原生的ajax的调用方法看底部 $url = @$_GET['url']; if (strstr($url ...

  4. 最新抖音无水印解析PHP源码

    源码介绍: 最新抖音无水印解析PHP源码 网盘下载地址: http://www.bytepan.com/hQuJxMu7aaG 图片:

  5. 怎么在腾讯云函数抖音无水印解析接口部署

    使用腾讯云函数(SCF)部署抖音无水印接口调用代码,无需服务器,稳定安全可靠! 示例接口返回数据请求: https://service-eu6l8yx0-1256101469.gz.apigw.ten ...

  6. python 抖音评论_新手python抖音无水印解析带详细注释

    资源来源网络,如果需要授权,请大家更换源码,模块仅供学习,如需商用请购买正版授权,本栏目不提供技术服务,积分不够请签到,或者会员中心投稿源码 注释都很详细,可以看看注释!友情提醒,仅供学习使用,请勿用 ...

  7. flutter 抖音无水印解析视频

    声明:这是学flutter的第一个应用,垃圾堆中的代码, 然后,大神请无视,如果作为flutter初学者,可以尝试看看 dependencies:flutter:sdk: flutterdio: ^3 ...

  8. PHP随机输出视频API源码,php 32行代码简单实现抖音无水印视频api,附前台页面

    [PHP] 纯文本查看 复制代码<?php header("Content-Type: text/html;charset=utf-8"); if(isset($_GET[& ...

  9. php视频吾爱破解,php 32行代码简单实现抖音无水印视频api,附前台页面

    原理和之前发的python 22行代码简单实现通过分享链接下载无水印视频一样.现在是通过php再次实现,并暴露出接口,这样可以方便前台开发页面.直接上代码 [PHP] 纯文本查看 复制代码<?p ...

  10. 百度SEO抖音无水印解析网站源码

    上传到主机解压 不用安装,直接打开域名就可以了 下载地址: http://www.bytepan.com/ekNSvXgncyt

最新文章

  1. 猪和python(pig and python)
  2. maven3.5.0在win10中的安装及环境变量配置
  3. 033_CSS相对定位
  4. PAT甲级1150 Travelling Salesman Problem:[C++题解]旅行商问题、图论
  5. 模态窗口和非模态窗口
  6. Python2.7编程基础(博主推荐)
  7. 03-21 webview 性能分析
  8. c语言 __FILE__,__DATE__,__TIME__ (宏)
  9. 2021-2025年中国一次性透析装置行业市场供需与战略研究报告
  10. 时间戳转换为时间格式,时间格式转换为时间戳
  11. MySQL游标(cursor) 定义及使用
  12. 发明专利写作常用模板和注意事项
  13. YYText 源码剖析:CoreText 与异步绘制
  14. VMware上Ubuntu联网(NAT方式)
  15. 从零开始搭建terraria(泰拉瑞亚)服务器
  16. 5分钟使用Python爬取豆瓣TOP250电影榜
  17. java实现gdal栅格矢量化_gdal栅格矢量化 - osc_lfs4vsih的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. vs2008,2010,2012安装包下载
  19. [数据集][VOC]高质量的目标检测数据集合集(持续更新)
  20. 浏览器在sandbox中没声音

热门文章

  1. python数据挖掘电影评分分析_豆瓣电影数据与票房数据分析
  2. 如何快速计算出三相电流的数值呢
  3. 超级计算机更深的蓝,国际象棋发生革命性变化 老棋手深感力不从心
  4. 重归理性 国内SOA平台期待价值提升
  5. compileflow 淘宝工作流引擎
  6. java 生成随机数_JAVA生成随机数
  7. 用python写Hello World
  8. c语言信息管理系统 分析,C语言图书信息管理系统教程分析.doc
  9. 华为语音解锁设置_华为解锁屏(华为语音解锁屏幕)
  10. Freeswitch 常用功能命令及配置详解2021-06-06