`
zhhaogen
  • 浏览: 13522 次
  • 性别: Icon_minigender_1
  • 来自: 未知
社区版块
存档分类
最新评论

java采集腾讯动漫

 
阅读更多

腾讯动漫章节地址结构为:

http://ac.qq.com/ComicView/index/id/$id/cid/$cid

$id为漫画id,$cid为章节id

在页码源码后面变量DATA储存了章节图片等详细信息:

var DATA        = 'LeyJjb21pYyI6eyJpZCI6NTI0MzU2LCJ0a...',
    

 DATA需要重新解码为json数据,解码函数在

<script src="http://ac.gtimg.com/media/js/ac.page.chapter.view_v2.3.5.js?v=20160826"></script>

 核心解码函数为:

 

  eval(function (p, a, c, k, e, r) {
    e = function (c) {
      return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29)  : c.toString(36))
    };
    if (!''.replace(/^/, String)) {
      while (c--) r[e(c)] = k[c] || e(c);
      k = [
        function (e) {
          return r[e]
        }
      ];
      e = function () {
        return '\\w+'
      };
      c = 1
    }
    while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
    return p
  }('p s(){i="C+/=";H.q=p(c){o a="",b,d,h,f,g,e=0;z(c=c.J(/[^A-L-M-9\\+\\/\\=]/g,"");e<c.r;)b=i.l(c.k(e++)),d=i.l(c.k(e++)),f=i.l(c.k(e++)),g=i.l(c.k(e++)),b=b<<2|d>>4,d=(d&t)<<4|f>>2,h=(f&3)<<6|g,a+=5.7(b),w!=f&&(a+=5.7(d)),w!=g&&(a+=5.7(h));n a=y(a)};y=p(c){z(o a="",b=0,d=D=8=0;b<c.r;)d=c.j(b),E>d?(a+=5.7(d),b++):F<d&&G>d?(8=c.j(b+1),a+=5.7((d&I)<<6|8&m),b+=2):(8=c.j(b+1),x=c.j(b+2),a+=5.7((d&t)<<K|(8&m)<<6|x&m),b+=3);n a}}o B=v s;u=(v N("n "+B.q(u.O(1))))();', 51, 51, '|||||String||fromCharCode|c2||||||||||_keyStr|charCodeAt|charAt|indexOf|63|return|var|function|decode|length|Base|15|DATA|new|64|c3|_utf8_decode|for|||ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|c1|128|191|224|this|31|replace|12|Za|z0|Function|substring'.split('|'), 0, {
  }))

 实际解析的代码为:

 

 

function Base() {
  _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  this.decode = function (c) {
    var a = '',
    b,
    d,
    h,
    f,
    g,
    e = 0;
    for (c = c.replace(/[^A-Za-z0-9\+\/\=]/g, ''); e < c.length; ) b = _keyStr.indexOf(c.charAt(e++)),
    d = _keyStr.indexOf(c.charAt(e++)),
    f = _keyStr.indexOf(c.charAt(e++)),
    g = _keyStr.indexOf(c.charAt(e++)),
    b = b << 2 | d >> 4,
    d = (d & 15) << 4 | f >> 2,
    h = (f & 3) << 6 | g,
    a += String.fromCharCode(b),
    64 != f && (a += String.fromCharCode(d)),
    64 != g && (a += String.fromCharCode(h));
    return a = _utf8_decode(a)
  };
  _utf8_decode = function (c) {
    for (var a = '', b = 0, d = c1 = c2 = 0; b < c.length; ) d = c.charCodeAt(b),
    128 > d ? (a += String.fromCharCode(d), b++)  : 191 < d && 224 > d ? (c2 = c.charCodeAt(b + 1), a += String.fromCharCode((d & 31) << 6 | c2 & 63), b += 2)  : (c2 = c.charCodeAt(b + 1), c3 = c.charCodeAt(b + 2), a += String.fromCharCode((d & 15) << 12 | (c2 & 63) << 6 | c3 & 63), b += 3);
    return a
  }
}
var B = new Base;
DATA = (new Function('return ' + B.decode(DATA.substring(1)))) ();

 Base转换为java代码:

	private static class Base
	{
		String _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

		public String decode(String c)
		{
			String a = "";
			int b, d, h, f, g, e = 0;
			for (c = c.replace("/[^A-Za-z0-9\\+\\/\\=]/g", ""); e < c.length();)
			{
				b = _keyStr.indexOf(c.charAt(e++));
				d = _keyStr.indexOf(c.charAt(e++));
				f = _keyStr.indexOf(c.charAt(e++));
				g = _keyStr.indexOf(c.charAt(e++));
				b = b << 2 | d >> 4;
				d = (d & 15) << 4 | f >> 2;
				h = (f & 3) << 6 | g;
				a += ((char) b + "");
				if (64 != f)
				{
					a += ((char) d + "");
				}
				if (64 != g)
				{
					a += ((char) h + "");
				}
			}
			a = _utf8_decode(a);
			return a;
		}

		public String _utf8_decode(String c)
		{
			String a = "";
			for (int b = 0, d, c1, c2 = 0; b < c.length();)
			{
				d = c.charAt(b);
				if (128 > d)
				{
					a += ((char) d + "");
					b++;
				} else
				{
					if (191 < d)
					{
						if (224 > d)
						{
							c2 = c.charAt(b + 1);
							a += String.valueOf((char) ((d & 31) << 6 | c2 & 63));
							b += 2;
						} else
						{
							c2 = c.charAt(b + 1);
							char c3 = c.charAt(b + 2);
							a += String.valueOf((char) (d & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
							b += 3;
						}
					}
				}
			}
			return a;
		}
	}

 

 

分享到:
评论

相关推荐

    java 对接腾讯IM 聊天功能接口

    本话题聚焦于如何使用Java语言对接腾讯即时通讯(IM)服务,实现聊天功能接口。腾讯IM提供了一整套完整的实时通信解决方案,适用于各种应用场景,如社交、教育、企业协作等。以下将详细介绍对接过程中的关键步骤和...

    phpcms v9采集规则-采集腾讯军事和腾讯各地新闻

    【phpcms v9采集规则-采集腾讯军事和腾讯各地新闻】是关于使用phpcms内容管理系统的一个高级特性,即数据采集功能。phpcms v9是一款基于PHP语言开发的开源内容管理系统,它提供了强大的网站内容管理、文章发布以及...

    Java开发腾讯rtx发送即时信息

    Java开发腾讯rtx发送即时信息。通过相应的java接口来调用腾讯RTX的接口。

    腾讯身份证验证人脸识别代码java实例

    总结来说,"腾讯身份证验证人脸识别代码java实例"涵盖了使用腾讯AI的身份证识别和人脸识别接口,通过Java编程语言实现与腾讯AI服务器的交互,进行活体检测和身份验证。`FaceRecognitionService.java` 文件是这一过程...

    java腾讯微博API

    JAVA-SDK-v1.1.8 腾讯API java

    腾讯java编码规范

    腾讯 Java 编码规范 腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、...

    腾讯云COS的Java版SDK测试Demo(增删改查)

    在本文中,我们将深入探讨如何使用腾讯云COS(Cloud Object Storage)的Java版SDK进行对象存储服务的基本操作,包括上传、下载、删除和查询。腾讯云COS是一款高效、安全、可扩展的对象存储服务,适合存储大量数据,...

    Java基于腾讯云短信和阿里云短信整合的一个简单demo.zip

    这个名为"Java基于腾讯云短信和阿里云短信整合的一个简单demo.zip"的压缩包文件,显然是一个示例项目,用于演示如何在Java应用中同时集成腾讯云和阿里云的短信服务。以下是对这个项目涉及知识点的详细解释: 1. **...

    腾讯云-人脸核身java开发Demo

    1. 开箱即用,导入到idea中即可 2. 修改FaceConfig.java中APP_ID和SECRET为自己申请的腾讯人脸核身ID和秘钥即可 3. 可以先看readme.md有对项目结构介绍 4. 参考博客:http://t.csdn.cn/hfjUd

    腾讯sdk的客户端java版本

    腾讯SDK的客户端Java版本是专为Java开发者设计的,用于集成腾讯的各项服务,如云存储、云计算、消息推送等。这个SDK使得Java开发者能够轻松地在自己的应用中调用腾讯的各项API,提升开发效率和应用功能。下面我们将...

    仿腾讯动漫图片阅读,动漫视频播放小程序前端模板

    该资源是一个针对微信小程序开发的前端模板,名为"comic-wx-master",旨在实现类似腾讯动漫的功能,包括图片阅读和动漫视频播放。这个模板包含了六个关键页面,它们是实现一个完整动漫阅读和视频播放体验的基础。 1...

    java仿腾讯MYQQ

    在"java仿腾讯MYQQ"项目中,Swing被用来设计并实现用户界面,包括登录窗口、聊天窗口、联系人列表等。通过Swing的组件,如JFrame、JButton、JLabel、JTextField、JTextArea等,可以轻松构建出与QQ类似的交互式界面。...

    JAVA 对接腾讯云直播的实现

    JAVA 对接腾讯云直播的实现 JAVA 对接腾讯云直播的实现是指使用 JAVA 语言对接腾讯云直播平台的实现过程。该实现过程主要涉及到对腾讯云直播平台的 API 调用,包括身份验证、签名生成、请求构建等步骤。 1. 腾讯云...

    腾讯微博Java SDK

    腾讯 微博 Java SDK

    Java调用腾讯云接口发送短信验证码项目源码.zip

    在本项目中,我们主要探讨如何使用Java编程语言来调用腾讯云的接口,以便实现发送短信验证码的功能。这个过程涉及到的技术点主要包括Java的网络请求处理、JSON数据解析以及腾讯云SDK的使用。 首先,我们需要了解...

    采集腾讯明星新闻信息保存到数据库

    在本文中,我们将深入探讨如何使用C# Winform应用程序来采集腾讯明星新闻网站的信息,并将其存储到SQL Server数据库中。这个过程涉及多个技术层面,包括网络数据抓取、数据处理和数据库交互。 首先,让我们从“网址...

    腾讯云对象存储静态工具类(CosUtils.java),快速上手!!!

    腾讯云对象存储静态工具类,满足日常工作使用,每个方法都有注释,快速上手!记得先引入Maven依赖,在配置文件中配置对象存储所属参数!

    9.(地图数据篇)腾讯地图影像瓦片数据获取--java代码.zip

    该资源包的执行效果查看地址:...“地图之家”专栏中的“9.(地图数据篇)腾讯地图影像瓦片数据获取--java代码”。如下载有问题,可联系博主。 解压密码:cesium

    java实现的一个会议系统

    ### Java实现的网上会议室系统知识点解析 #### 一、系统概述 本系统为一款基于Java技术栈构建的网上会议室系统,旨在为EasyJF开源团队提供一个高效的在线交流平台。系统设计灵活,支持多主题会议室并行运行,具备...

Global site tag (gtag.js) - Google Analytics