腾讯动漫章节地址结构为:
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)服务,实现聊天功能接口。腾讯IM提供了一整套完整的实时通信解决方案,适用于各种应用场景,如社交、教育、企业协作等。以下将详细介绍对接过程中的关键步骤和...
【phpcms v9采集规则-采集腾讯军事和腾讯各地新闻】是关于使用phpcms内容管理系统的一个高级特性,即数据采集功能。phpcms v9是一款基于PHP语言开发的开源内容管理系统,它提供了强大的网站内容管理、文章发布以及...
Java开发腾讯rtx发送即时信息。通过相应的java接口来调用腾讯RTX的接口。
总结来说,"腾讯身份证验证人脸识别代码java实例"涵盖了使用腾讯AI的身份证识别和人脸识别接口,通过Java编程语言实现与腾讯AI服务器的交互,进行活体检测和身份验证。`FaceRecognitionService.java` 文件是这一过程...
JAVA-SDK-v1.1.8 腾讯API java
腾讯 Java 编码规范 腾讯 Java 编码规范是腾讯集团管理标准的一部分,旨在确保公司项目代码的易维护性和编码安全性。该规范涵盖了 Java 编码风格、文件组织、代码风格、注释、命名、声明、异常、习惯等方面。 一、...
在本文中,我们将深入探讨如何使用腾讯云COS(Cloud Object Storage)的Java版SDK进行对象存储服务的基本操作,包括上传、下载、删除和查询。腾讯云COS是一款高效、安全、可扩展的对象存储服务,适合存储大量数据,...
这个名为"Java基于腾讯云短信和阿里云短信整合的一个简单demo.zip"的压缩包文件,显然是一个示例项目,用于演示如何在Java应用中同时集成腾讯云和阿里云的短信服务。以下是对这个项目涉及知识点的详细解释: 1. **...
1. 开箱即用,导入到idea中即可 2. 修改FaceConfig.java中APP_ID和SECRET为自己申请的腾讯人脸核身ID和秘钥即可 3. 可以先看readme.md有对项目结构介绍 4. 参考博客:http://t.csdn.cn/hfjUd
腾讯SDK的客户端Java版本是专为Java开发者设计的,用于集成腾讯的各项服务,如云存储、云计算、消息推送等。这个SDK使得Java开发者能够轻松地在自己的应用中调用腾讯的各项API,提升开发效率和应用功能。下面我们将...
该资源是一个针对微信小程序开发的前端模板,名为"comic-wx-master",旨在实现类似腾讯动漫的功能,包括图片阅读和动漫视频播放。这个模板包含了六个关键页面,它们是实现一个完整动漫阅读和视频播放体验的基础。 1...
在"java仿腾讯MYQQ"项目中,Swing被用来设计并实现用户界面,包括登录窗口、聊天窗口、联系人列表等。通过Swing的组件,如JFrame、JButton、JLabel、JTextField、JTextArea等,可以轻松构建出与QQ类似的交互式界面。...
JAVA 对接腾讯云直播的实现 JAVA 对接腾讯云直播的实现是指使用 JAVA 语言对接腾讯云直播平台的实现过程。该实现过程主要涉及到对腾讯云直播平台的 API 调用,包括身份验证、签名生成、请求构建等步骤。 1. 腾讯云...
腾讯 微博 Java SDK
在本项目中,我们主要探讨如何使用Java编程语言来调用腾讯云的接口,以便实现发送短信验证码的功能。这个过程涉及到的技术点主要包括Java的网络请求处理、JSON数据解析以及腾讯云SDK的使用。 首先,我们需要了解...
在本文中,我们将深入探讨如何使用C# Winform应用程序来采集腾讯明星新闻网站的信息,并将其存储到SQL Server数据库中。这个过程涉及多个技术层面,包括网络数据抓取、数据处理和数据库交互。 首先,让我们从“网址...
腾讯云对象存储静态工具类,满足日常工作使用,每个方法都有注释,快速上手!记得先引入Maven依赖,在配置文件中配置对象存储所属参数!
该资源包的执行效果查看地址:...“地图之家”专栏中的“9.(地图数据篇)腾讯地图影像瓦片数据获取--java代码”。如下载有问题,可联系博主。 解压密码:cesium
### Java实现的网上会议室系统知识点解析 #### 一、系统概述 本系统为一款基于Java技术栈构建的网上会议室系统,旨在为EasyJF开源团队提供一个高效的在线交流平台。系统设计灵活,支持多主题会议室并行运行,具备...