爱奇艺视频解析(Java代码)(16.5.30更新)

原创 2016年05月30日 20:22:51

注:此代码仅供学习交流 不做商务用途

public class CrackIQiyi extends CrackBase {
private final static Logger logger = LoggerFactory
.getLogger(CrackIQiyi.class);


String tvid;


public CrackIQiyi(String url) {
super(url);
}




@Override
public String parseVideoUrl() {
String ret = "";
String webUrl =url;
if (StringUtils.isEmpty(webUrl))
return ret;
try {
String str1 = Utils.execute("", webUrl);
if (StringUtils.isEmpty(str1)) {
return ret;
}
String str4 = null;
String str3 = null;
String str2 = null;
Matcher localMatcher1 = Pattern.compile("albumId:[\\s]*?([0-9]+)")
.matcher(str1);
Matcher localMatcher2 = Pattern.compile("tvId:[\\s]*?([0-9]+)")
.matcher(str1);
Matcher localMatcher3 = Pattern.compile("cid:[\\s]*?([0-9]+)")
.matcher(str1);
if ((localMatcher1 != null) && (localMatcher1.find())
&& (localMatcher1.groupCount() > 0)
&& (localMatcher2 != null) && (localMatcher2.find())
&& (localMatcher2.groupCount() > 0)
&& (localMatcher3 != null) && (localMatcher3.find())
&& (localMatcher3.groupCount() > 0)) {
str4 = localMatcher1.group(1);
str3 = localMatcher2.group(1);
str2 = localMatcher3.group(1);
}
Matcher localMatcher4 = Pattern.compile(
"data-player-albumid=\"([0-9]+)\"").matcher(str1);
Matcher localMatcher5 = Pattern.compile(
"data-player-tvid=\"([0-9]+)\"").matcher(str1);
Matcher localMatcher6 = Pattern.compile(
"data-errorqiyu-cid=\"([0-9]+)\"").matcher(str1);
if ((localMatcher4 != null) && (localMatcher4.find())
&& (localMatcher4.groupCount() > 0)
&& (localMatcher5 != null) && (localMatcher5.find())
&& (localMatcher5.groupCount() > 0)
&& (localMatcher6 != null) && (localMatcher6.find())
&& (localMatcher6.groupCount() > 0)) {
str4 = localMatcher4.group(1);
str3 = localMatcher5.group(1);
str2 = localMatcher6.group(1);
}


String videoid = null;
Matcher localMatcher8 = Pattern.compile(
"data-player-videoid=\"([^\"]+)\"").matcher(str1);
if ((localMatcher8 != null) && (localMatcher8.find())
&& (localMatcher8.groupCount() > 0))
videoid = localMatcher8.group(1);
int time = (int) (Utils.getNetime() / 1000L);
Object[] arrayOfObject = new Object[5];
tvid = String.valueOf(str3);
arrayOfObject[0] = String.valueOf(str3);
arrayOfObject[1] = String.valueOf(videoid);
arrayOfObject[2] = time;
arrayOfObject[3] = Utils.StringToLowercaseMD5(time
+ "d5fb4bd9d50c4be6948c97edd7254b0e" + str3);
arrayOfObject[4] = "20140213141851016xMqipWjr10182";
String ress = String
.format("http://cache.m.iqiyi.com/tmts/%s/%s/?t=%s&sc=%s&src=76f90cbd92f94a2e925d83e8ccd22cb7&uid=%s",
arrayOfObject);


String html = Utils.GetSource(ress);
JSONObject localJSONObject1 = new JSONObject(html);
JSONObject localJSONObject2 = localJSONObject1
.optJSONObject("data");
if (localJSONObject2 != null) {
String str_4 = localJSONObject2.optString("vd").trim();
String str5 = localJSONObject2.optString("m3u");
String str6 = localJSONObject2.optString("m3utx")
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
if (type(str_4)) {
int j = str5.indexOf("?");
if (j > 0) {
stand = str5.substring(0, j)
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
} else {
stand = str6;
}


}
JSONArray localJSONArray = localJSONObject2
.getJSONArray("vidl");
for (int in = 0; in < localJSONArray.length(); in++) {
JSONObject localJSONObject3 = localJSONArray
.getJSONObject(in);
if (localJSONObject3 != null) {
String str7 = localJSONObject3.optString("vd").trim();
if (!str7.equals(str_4)) {
String str8 = localJSONObject3.optString("vid");
getMoreSource(str8);
}
}
}
System.out.println(stand);
System.out.println(high);
System.out.println(sup);
return SUCCESS;
}
} catch (Exception ex) {
logger.error(ex.toString(), ex);
}
return FAIL;
}


public static boolean type(String paramString) {
return (paramString.equals("1")) || (paramString.equals("2"))
|| (paramString.equals("4")) || (paramString.equals("5"));
}


public void getMoreSource(String videoid) {
int time = (int) (Utils.getNetime() / 1000L);
Object[] arrayOfObject = new Object[5];
arrayOfObject[0] = String.valueOf(tvid);
arrayOfObject[1] = String.valueOf(videoid);
arrayOfObject[2] = time;
arrayOfObject[3] = Utils.StringToLowercaseMD5(time
+ "d5fb4bd9d50c4be6948c97edd7254b0e" + tvid);
arrayOfObject[4] = "20140213141851016xMqipWjr10182";
String ress = String
.format("http://cache.m.iqiyi.com/tmts/%s/%s/?t=%s&sc=%s&src=76f90cbd92f94a2e925d83e8ccd22cb7&uid=%s",
arrayOfObject);


String html = Utils.GetSource(ress);
JSONObject localJSONObject1;
try {
localJSONObject1 = new JSONObject(html);


JSONObject localJSONObject2 = localJSONObject1
.optJSONObject("data");
if (localJSONObject2 != null) {
String str4 = localJSONObject2.optString("vd").trim();
String str5 = localJSONObject2.optString("m3u");
String str6 = localJSONObject2.optString("m3utx")
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
if (type(str4)) {
int j = str5.indexOf("?");


if (str4.equals("1")) {
if (j > 0) {
stand = str5.substring(0, j)
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
} else {
stand = str6;
}
} else if (str4.equals("2")) {
if (j > 0) {
high = str5.substring(0, j)
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
} else {
high = str6;
}
} else if (str4.equals("4")) {
if (j > 0) {
sup = str5.substring(0, j)
+ "?src=76f90cbd92f94a2e925d83e8ccd22cb7";
} else {
sup = str6;
}
}


}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


注:时间问题 不做详细解析 如有需求 请留言询问  代码7-10天会上传至github  届时会提供链接




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

优酷视频解析(16.5.30更新)Java代码版本

声明:代码仅供学习交流  不做其他用途  一般python和Js的破解比较常见  Java版本由于需要 自己做了下  ,本篇优酷破解参考github上优酷python版本破解  常用的获取网页源码...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Spark中常用工具类Utils的简明介绍

Utils是Spark中最常用的工具类之一,如果不关心其实现,也不会对理解Spark有太多影响。但是对于Scala或者Spark的初学者来说,通过了解Utils工具类的实现,也是个不错的入门途径。下面...

优酷视频解析(16.5.30更新)Java代码版本

声明:代码仅供学习交流  不做其他用途  一般python和Js的破解比较常见  Java版本由于需要 自己做了下  ,本篇优酷破解参考github上优酷python版本破解  常用的获取网页源码...

爱奇艺视频解析

  • 2016年11月07日 21:36
  • 536KB
  • 下载

爱奇艺视频广告拦截失败,发文共商大计

秋式广告杀手,一般视频广告都秒杀,唯独爱奇艺,这个奇葩,研究多天,不得奇解,故发文与各大友人共商大计: 下面给大伙指导下通用的拦截手法: 对于各大视频的拦截,分为简单的、复杂的、奇葩的。 ...
  • cyq1162
  • cyq1162
  • 2016年11月23日 12:14
  • 131

【转】Netflix、亚马逊、爱奇艺,三大视频巨头技术之路

2017湖南卫视跨年演唱会已完美收官,除了“亲儿子”芒果TV进行直播之外,还独家授权爱奇艺进行全景直播,为其VIP会员提供“先网后台”专享直播和回看服务。此外,爱奇艺通过独家的绿镜大数据技术对本次演唱...

将爱奇艺的视频格式转化为音频格式

爱奇艺视频格式转为MP3格式 在我们日常生活中经常会看到一些名人或者参赛者在节目或者比赛中唱出一些非常好听的live版的歌曲,我们希望可以下载下来转成MP3格式放到手机中随时都可以来听,下面就是将爱奇...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:爱奇艺视频解析(Java代码)(16.5.30更新)
举报原因:
原因补充:

(最多只允许输入30个字)