通过反编译得到 优酷视频 真实地址
2014-03-23 16:14
246 查看
import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class Main { public static void main(String []a) throws Exception { //目前只支持 地址 带有 v_show 的网页 String htmlUrl = "http://v.youku.com/v_show/id_XMzgwMzQzNzM2.html";//视频页面地址 //截取 id f17333950o1p0 String htmlUrlId = htmlUrl.substring(htmlUrl.lastIndexOf("/")+4, htmlUrl.length()-5); //取得返回的 json数据 String json = Main.getInputHtml("http://v.youku.com/player/getPlayList/VideoIDS/"+htmlUrlId); JSONObject jsobj = new JSONObject(json); JSONArray jsonarr = jsobj.getJSONArray("data"); JSONObject obj1 = jsonarr.getJSONObject(0); double seed = obj1.getDouble("seed"); JSONObject obj2 = obj1.getJSONObject("streamfileids"); String mp4id = null; String flvid = null; String format = null; try { mp4id = obj2.getString("mp4"); format = "mp4"; } catch (JSONException e) { System.out.println("没有MP4格式"); try { flvid = obj2.getString("flv"); format = "flv"; } catch (JSONException e1) { System.out.println("没有FLV格式"); return; } } // String realfileid = null; if (format.equals("mp4")) { realfileid = getFileID(mp4id, seed); } else { realfileid = getFileID(flvid, seed); } String idLeft = realfileid.substring(0, 8); String idRight = realfileid.substring(10); // String sid = genSid(); JSONObject obj3 = obj1.getJSONObject("segs"); JSONArray mp4arr = obj3.getJSONArray(format); for (int i = 0; i < mp4arr.length(); i++) { JSONObject o = mp4arr.getJSONObject(i); String k = o.getString("k"); String url = "http://f.youku.com/player/getFlvPath/sid/" + sid + "_" + String.format("%1$02X", i) + "/st/" + format + "/fileid/" + idLeft + String.format("%1$02X", i) + idRight + "?K=" + k; System.out.println(url); } } private static String getFileID(String fileid, double seed) { String mixed = getFileIDMixString(seed); String[] ids = fileid.split("\\*"); StringBuilder realId = new StringBuilder(); int idx; for (int i = 0; i < ids.length; i++) { idx = Integer.parseInt(ids); realId.append(mixed.charAt(idx)); } return realId.toString(); } public static String genSid() { int i1 = (int) (1000 + Math.floor(Math.random() * 999)); int i2 = (int) (1000 + Math.floor(Math.random() * 9000)); return System.currentTimeMillis() + "" + i1 + "" + i2; } private static String getFileIDMixString(double seed) { StringBuilder mixed = new StringBuilder(); StringBuilder source = new StringBuilder("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890"); int index, len = source.length(); for (int i = 0; i < len; ++i) { seed = (seed * 211 + 30031) % 65536; index = (int) Math.floor(seed / 65536 * source.length()); mixed.append(source.charAt(index)); source.deleteCharAt(index); } return mixed.toString(); } public static String getInputHtml(String urlStr) { URL url = null; try { url = new URL(urlStr); HttpURLConnection httpsURLConnection = (HttpURLConnection) url.openConnection(); httpsURLConnection.setRequestMethod("GET"); httpsURLConnection.setConnectTimeout(5 * 1000); if (httpsURLConnection.getResponseCode() == 200) { // 通过输入流获取网络图片 InputStream inputStream = httpsURLConnection.getInputStream(); byte[] data = readInputStream(inputStream); inputStream.close(); return new String(data, "UTF-8"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return null; } public static byte[] readInputStream(InputStream inputStream) throws Exception { // 定义一个输出流向内存输出数据 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // 定义一个缓冲区 byte[] buffer = new byte[1024]; // 读取数据长度 int len = 0; // 当取得完数据后会返回一个-1 while ((len = inputStream.read(buffer)) != -1) { // 把缓冲区的数据 写到输出流里面 byteArrayOutputStream.write(buffer, 0, len); } byteArrayOutputStream.close(); // 得到数据后返回 return byteArrayOutputStream.toByteArray(); } } 结果
相关文章推荐
- 优酷视频真实地址解析
- 优酷真实视频地址解析破解思路,含破解方法(更新至2016-2-28)
- 查找各大视频网站真实视频地址方法(乐视优酷会员腾讯56酷6pptv激动网)
- C# 通过优酷网址 获取flash真实地址
- 优酷真实视频地址解析
- C#实现的优酷真实视频地址解析功能(2014新算法)
- 优酷真实视频地址解析
- 优酷真实视频地址解析——2016年9月20日 优酷视频下载工具
- php 获取优酷视频的真实地址(2014.6月新算法)
- 优酷视频地址解析——真实地址(flash地址)
- 解释优酷 视频真实地址,测试软件上传到共享,
- 【转】Java 解析优酷地址获取视频真实地址
- 如何拿到优酷的视频真实地址
- 优酷真实视频地址解析
- 优酷真实视频地址解析
- 优酷视频真实地址解析
- 优酷真实视频地址解析
- 优酷真实视频地址解析
- 【分享】优酷视频真实视频地址提取(类硕鼠下载器api)
- 优酷视频真实地址解析