精华内容
下载资源
问答
  • 区块链与大数据有着怎样的关系?

    千次阅读 2018-03-30 10:49:30
    区块链测序可以利用私钥限制访问权限,从而规避法律对个人获取基因数据的限制问题,并且利用分布式计算资源,低成本完成测序服务。区块链的安全性让测序成为工业化的解决方案,实现了全球规模的测序,从而推进数据的...

    区块链让数据真正“放心”流动起来

    区块链以其可信任性、安全性和不可篡改性,让更多数据被解放出来。用一个典型案例来说明,即区块链是如何推进基因测序大数据产生的。区块链测序可以利用私钥限制访问权限,从而规避法律对个人获取基因数据的限制问题,并且利用分布式计算资源,低成本完成测序服务。区块链的安全性让测序成为工业化的解决方案,实现了全球规模的测序,从而推进数据的海量增长。


    分布式的储存

    大数据,指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据需要应对海量化和快增长的存储,这要求底层硬件架构和文件系统在性价比上要大大高于传统技术,能够弹性扩张存储容量。

    区块链,是比特币的底层技术架构,它在本质上是一种去中心化的分布式账本。区块链技术作为一种持续增长的、按序整理成区块的链式数据结构,通过网络中多个节点共同参与数据的计算和记录,并且互相验证其信息的有效性。从这一点来说,区块链技术也是一种特定的数据库技术。由于去中心化数据库在安全、便捷方面的特性,很多业内人士看好其发展,认为它是对现有互联网技术的升级与补充。区块链则是纯粹意义上的分布式系统。

    分布式计算

    大数据的分析挖掘是数据密集型计算,需要巨大的分布式计算能力。节点管理、任务调度、容错和高可靠性是关键技术。Google是这种分布式计算技术的代表,通过添加服务器节点可线性扩展系统的总处理能力,在成本和可扩展性上都有巨大的优势。现在,除了批计算,大数据还包括了流计算、图计算、实时计算、交互查询等计算框架。

    区块链的共识机制,就是所有分布式节之间怎么达成共识,通过算法来生成和更新数据,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链主要包括四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。以比特币为例,采用的是“工作量证明”,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。

    大数据与区块链的相同点

    分布式存储:HDFS vs. 区块 

    大数据,需要应对海量化和快增长的存储,这要求底层硬件架构和文件系统在性价比上要大大高于传统技术,能够弹性扩张存储容量。谷歌的GFS和HadoopHDFS奠定了大数据存储技术的基础。另外,大数据对存储技术提出的另一个挑战是多种数据格式的适应能力,因此现在大数据底层的存储层不只是HDFS,还有HBase和Kudu等存储架构。 

    区块链,是比特币的底层技术架构,它在本质上是一种去中心化的分布式账本。区块链技术作为一种持续增长的、按序整理成区块的链式数据结构,通过网络中多个节点共同参与数据的计算和记录,并且互相验证其信息的有效性。从这一点来说,区块链技术也是一种特定的数据库技术。由于去中心化数据库在安全、便捷方面的特性,很多业内人士看好其发展,认为它是对现有互联网技术的升级与补充。 

    分布式计算:MapReduce vs. 共识机制 

    大数据的分析挖掘是数据密集型计算,需要巨大的分布式计算能力。节点管理、任务调度、容错和高可靠性是关键技术。Google和Hadoop的MapReduce是这种分布式计算技术的代表,通过添加服务器节点可线性扩展系统的总处理能力(Scale Out),在成本和可扩展性上都有巨大的优势。现在,除了批计算,大数据还包括了流计算、图计算、实时计算、交互查询等计算框架。 

    区块链的共识机制,就是所有分布式节之间怎么达成共识,通过算法来生成和更新数据,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链主要包括四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。以比特币为例,采用的是工作量证明”(Proof Of Work,简称POW),只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。 

    大数据与区块链的不同点

    2011年,“大数据”第一次上榜,位于技术萌芽期的爬坡阶段,当时还统称为“Big Data and Extreme Information Processing and Management”(“大数据”和极端信息处理和管理)。2012年更进一步,并在2013年几乎达到了过热期顶峰。经历了2014年的下滑,从2015年开始,“大数据”突然从曲线中消失,可解读为Gartner对大数据的定位已从“新兴”转为“主流”。当前,大数据对于企业的意义已从能力要素上升为战略核心。相对而言,“区块链”直到2016年才第一次出现在《技术成熟度曲线》中,并直接进入“过热期”。总的来看,“大数据”和“区块链”所处的生命周期阶段大不相同,两者约有5年左右的差距。

    大数据通常用来描述数据集足够大,足够复杂,以致很难用传统的方式来处理。区块链能承载的信息数据是有限的,离“大数据”标准还差得很远。

    大数据与区块链的差异:

    结构化 vs 非结构化:区块链是结构定义严谨的块,通过指针组成的链,典型的结构化数据,而大数据需要处理的更多的是非结构化数据。

    独立 vs 整合:区块链系统为保证安全性,信息是相对独立的,而大数据着重的是信息的整合分析。

    直接 vs 间接:区块链系统本身就是一个数据库,而大数据指的是对数据的深度分析和挖掘,是一种间接的数据。

    数学 vs 数据:区块链试图用数学说话,区块链主张“代码即法律”,而大数据试图用数据说话。

    匿名 vs 个性:区块链是匿名的(公开账本,匿名拥有者,相对于传统金融机构的公开账号,账本保密),而大数据有意的是个性化。

    在区块链中使用大数据技术

    区块链是一种不可篡改的、全历史的分布式数据库存储技术,巨大的区块链数据集合包含着每一笔交易的全部历史,随着区块链技术的应用迅速发展,数据规模会越来越大,不同业务场景区块链的数据融合会进一步扩大数据规模和丰富性。

    区块链以其可信任性、安全性和不可篡改性,让更多数据被解放出来,推进数据的海量增长。

    区块链的可追溯性使得数据从采集、交易、流通,以及计算分析的每一步记录都可以留存在区块链上,使得数据的质量获得前所未有的强信任背书,也保证了数据分析结果的正确性和数据挖掘的效果。

    区块链能够进一步规范数据的使用,精细化授权范围。脱敏后的数据交易流通,则有利于突破信息孤岛,建立数据横向流通机制,形成“社会化大数据”。基于区块链的价值转移网络,逐步推动形成基于全球化的数据交易场景。

    区块链提供的是账本的完整性,数据统计分析的能力较弱。大数据则具备海量数

    据存储技术和灵活高效的分析技术,极大提升区块链数据的价值和使用空间。

    Bingdata优网助帮汇聚多平台采集的海量数据,通过大数据技术的分析及预测能力为企业提供智能化的数据分析、运营优化、投放决策、精准营销、竞品分析等整合营销服务。

    北京优网助帮信息技术有限公司(简称优网助帮)是以大数据为基础,并智能应用于整合营销的大数据公司,隶属于亨通集团。Bingdata是其旗下品牌。优网助帮团队主要来自阿里、腾讯、百度、金山、搜狐及移动、电信、联通、华为、爱立信等著名企业的技术大咖,兼有互联网与通信运营商两种基因,为大数据的算法分析提供强大的技术支撑。

    展开全文
  • 那么,怎样处理爬虫资源问题呢? 处理爬虫资源问题,最常见的就是用代理IP,一个是免费的资源,一个是购置专业的代理IP。免费本钱低,但不稳定,大局部代理IP基本都不能用的,质量很差。关于爬虫工作者来说,任务量...

    在大数据的时间,爬虫业务大家都不再生疏。随着网络的开展,反爬虫也在不时的优化。想打破反爬虫的限制,好的代理ip资源是十分重要的。那么,怎样处理爬虫资源问题呢?

    处理爬虫资源问题,最常见的就是用代理IP,一个是免费的资源,一个是购置专业的代理IP。免费本钱低,但不稳定,大局部代理IP基本都不能用的,质量很差。关于爬虫工作者来说,任务量大,散布式爬虫也是进步工作效率的好方法。

    展开全文
  • 通过从服务器获取数据,客户给出需求,形成怎样的表格,多样化的静态图和动态图,各种各样资源文件,这些需求都不是简单的从数据库中取出来就可以直接使用的,往往需要进行对应的算法归类,类别划分等。对于复杂的...

    背景分析:
    面对当前多种的业务需求和杂乱无章的数据堆放,Java后台处理变得尤为重要。对于信息系统开发而言,归根到底是对数据的分类与处理。通过从服务器获取数据,客户给出需求,形成怎样的表格,多样化的静态图和动态图,各种各样资源文件,这些需求都不是简单的从数据库中取出来就可以直接使用的,往往需要进行对应的算法归类,类别划分等。对于复杂的图标,借助开源的前段框架或者相应的画图插件即可完成,只需要直接调用即可。
    **问题导入:**借助CSDN为例子进行知识探讨,仅进行学习与技术探讨,如有侵权,请及时联系 QQ邮箱:1306131289@qq.com
    在这里插入图片描述
    通过简单的分析,上述网页的1,2,3这三个部分肯定不是来源于一个数据库,他们的格式,数据长短也大相径庭。但是它们有一个相同点,需要同时获取数据到本页面。从后台角度而言,用最简单的方式解决就是它们具有相同的接口,通过网址链接请求,再从服务器数据库中获取相应的数据,进行处理,整合在一个json或者其它传递格式返回到当前页面中来。
    后台具体思路:
    1.依据需求和接口文档,从数据库获取原数据在后台存储起来。其中需要用到
    ①从服务器获取json数据
    ②json数据与String,ArrayList等数据格式之间的转换
    2.分析需求,将数据转存为hashmap或者arraylist方便一起传输。其中注意需要进行算法处理时,对下标,对应名称要仔细检查。
    3.组合为一个字符串或者其它格式传递给前端。(每一个模块应有对应的名称,前端好直接获取处理)
    代码实例:
    1.从数据库连接路径获取数据(实测有用干货)

    /**
    	 * json数据转为字符串
    	 * @param url1  获取json数据的URL地址
    	 * @return messageString String类型的json字符串
    	 */
    	public String getHttpResult(String url1) {
    		String messageString = null;
    		try {
    			URL url = new URL(url1);
    			// 打开连接
    			HttpURLConnection urlConnection = (HttpURLConnection) url
    					.openConnection();
    			System.out.println(urlConnection);
    			urlConnection.setConnectTimeout(8000);//连接超时
    			urlConnection.setReadTimeout(8000);//读操作超时
    			
    			if (200 == urlConnection.getResponseCode()) {
    				// 得到输入流
    				InputStream is = urlConnection.getInputStream();
    				ByteArrayOutputStream baos = new ByteArrayOutputStream();
    				byte[] buffer = new byte[1024];
    				int len = 0;
    				while (-1 != (len = is.read(buffer))) {
    					baos.write(buffer, 0, len);
    					baos.flush();
    				}
    				// baos.toString("utf-8");
    				//System.out.println("获取数据" + baos.toString("utf-8"));
    				messageString = baos.toString("utf-8");
    				baos.close();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    		return messageString;
    
    	}
    

    2.传递参数存储框架搭建
    分析:对于要传递四个模块的数据使用map存储方式用K,V将每一个内容和模块对应。

     //总仓库
    static HashMap<String, Map<Integer,Map<String, String>>>result = new HashMap<String,  Map<Integer,Map<String, String>>>();
    //分仓库
    Map<Integer,Map<String, String>> TMmap = new LinkedHashMap<Integer,Map<String, String>>();
    //仓库子内容
    Map<String, String> TMmap1 = new LinkedHashMap<String, String>();
    

    3.对封装好的数据进行类型转换进行传输(灵活使用gson)

    //其中BaseResponse类需要自己创建,依据需求设置类属性
    BaseResponse<HashMap<String, Map<Integer,Map<String, String>>>> mes = new BaseResponse<HashMap<String,Map<Integer,Map<String, String>>>>();
    mes.setCode(1);
    mes.setData(result);
    mes.setMsg("ok");
         
    Gson gson = new Gson();
    String json = gson.toJson(mes);
    return json;
    

    4.接口测试,数据如果有差异,进行适当修改即可。

    展开全文
  • 背景这是一个大数据时代,有时候有些程序想要在网站上爬取主流网站的视频信息并记录下来做数据分析,甚至想要通过程序自动拿到各大视频网站的视频资源,这个时候就出现了很多去研究这个的程序员了~我研究的主要是...

    背景

    这是一个大数据时代,有时候有些程序想要在网站上爬取主流网站的视频信息并记录下来做数据分析,甚至想要通过程序自动拿到各大视频网站的视频资源,这个时候就出现了很多去研究这个的程序员了~

    我研究的主要是移动端的视频播放,所以接下来讲的所有,都是和移动端的页面相关的。

    知识储备

    首先我们要了解怎样去抓取网页信息,这个可以参考我前面的一篇文章Jsoup初探

    之所以博主选择腾讯视频有两个很重要的原因,第一,开始说到了我做的是移动端,视频播放格式一般是采用m3u8或者采用最简单的mp4格式,而m3u8一般作为直播的流媒体存储格式,里面放的是若干个切片的ts文件,大多数视频供应商(youku)在生成m3u8的时候就已经把广告的ts切片放在里面了,我们用程序剔出来还是比较麻烦的,而mp4就比较好了,最简单的格式,跨平台性能好,在Chrome上也可以调试,而腾讯视频在移动端就是统一转码(H264)后的mp4文件,这一点相当nice,用起来也很是方便。第二呢,腾讯视频会识别电脑操作系统,网页的播放的时候不是无脑的直接上flash,这让我的Mac不会烧机然我有了好感,所以,就觉得去爬你了。

    方案和过程

    做过这方面工作的同志大概会了解,腾讯视频在播放列表中给出的播放链接和真实播放链接是不同的,进入真实播放链接后爬取到的视频源文件名和真实源文件名也是不同的,它是通过js中的方法访问某个servlet给出加密vkey才可以播放。

    博客给大家做一个展示,决定爬取一下国产经典葫芦娃片子,将把重要步骤和代码为大家展现:

    播放列表链接:葫芦兄弟

    1.png

    评分还是杠杠的。我们的第一个目标就是拿下这十三集的播放链接。

    2.png

    看了我前面文章的都应该会觉得so easy了。

    然而,调试了一下选择器body > div:nth-child(2) > div.site_container.container_main > div.container_inner > div > div.wrapper_main > div._playsrc_series > span > div > div.mod_bd._episodes._bd_container > div > span > a发现并获取不到a标签的资源,那就很可能是动态加载的列表了,看一下网页源代码

    3.png

    果然是空的,那我们就去抓下包看看是哪个servlet获取的

    4.png

    果然,这种都是比较好抓到的,顺便访问一下这个链接,看到了列表信息

    5.png

    那就直接去抓这个网页,然后把链接拿下来好了。

    package com.videoqq.jsoup;

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.URL;

    public class BlogSpider {

    public static void main(String[] args) {

    try {

    String requestUrl = "http://s.video.qq.com/get_playsource?id=2iqrhqekbtgwp1s&plat=2&type=1&data_type=2&video_type=3&plname=&otype=json&num_mod_cnt=20&callback=_jsonp_0_6914&_t=1474533056089";

    URL obj = new URL(requestUrl);

    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setReadTimeout(5000);

    conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");

    conn.addRequestProperty("User-Agent", "Mozilla");

    conn.addRequestProperty("Referer", "google.com");

    boolean redirect = false;

    int status = conn.getResponseCode();

    if (status != HttpURLConnection.HTTP_OK) {

    if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM

    || status == HttpURLConnection.HTTP_SEE_OTHER)

    redirect = true;

    }

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    String inputLine;

    //拿到整个html

    StringBuffer html = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {

    html.append(inputLine);

    }

    in.close();

    //分词拿下所有URL

    String[] param = html.toString().split("playUrl");

    //第一个不含播放链接,舍弃

    for (int i = 1; i < param.length; i++) {

    param[i] = param[i].substring(3,63);

    System.out.println(param[i]);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    打印链接看看:

    6.png

    随便打开一个链接,以移动端的模式打开,会发现跳转了一个加密的链接,这就是真实的播放地址。

    我打开的是

    http://v.qq.com/cover/2/2iqrhqekbtgwp1s.html?vid=c01350046ds

    出现了这个链接

    https://m.v.qq.com/x/cover/2/2iqrhqekbtgwp1s.html?vid=c01350046ds&ptag=v_qq_com%23v.play.adaptor%233

    7.png

    很幸运这个两个链接的区别并不是很大,我们多打开几个会发现规律都一样,就是把前缀改成了https://m.v.qq.com/x

    ,所以基本不用做什么处理,但不是所有链接都是这样的,就算变化比较大,也可能找到其中的规律,一般是在js中文件关键字的位置做了个混淆,仔细分析一下还是可以得到这个真实播放地址的。

    https://m.v.qq.com/x/cover/2/2iqrhqekbtgwp1s.html?vid=c01350046ds

    后面的参数可以不管了。

    审查这个页面,很容易会发现该视频的播放地址。

    8.png

    在打开这个链接也是有效的。

    9.png

    10.png

    这说明我们还需要找到它的加载地址,也是通过某个servlet来传过来的,也就是需要去抓包看看到底哪个请求做了这个事呢,并且这个请求归根到底就是刷新了地址的vkey,获取到更新后的vkey,后面的参数都是无关紧要的。

    然而,你在这个页面抓取所有的包都找不到一个可以去post vid而获取key的servlet,这就是大家止步不前的地方了。中间有很多尝试的方法,最后都失败了,讲讲我最后的方案。

    腾讯把所有mp4播放的入口都给加密的很深,我就去尝试看看大众版,就是flash的swf文件,例如访问

    http://static.video.qq.com/TPout.swf?vid=c01350046ds&auto=0

    ,这个通用版只是vid改一下就可以,其他的都不变就可以访问swf的文件,然后尝试抓包(因为是swf,只能在pc模式下抓),结果还真抓到个有用的东西

    11.png

    12.png

    多么美好的结果.

    我们分析一下这个request不难发现里面有&vid=c01350046ds,是不是所有与这个id相同的三处换成其他视频的vid也是可以的呢?

    同样里面也带有vkey参数,按照上面的方法也试一下看。结果也是让人挺失望的。并不能拿到它的值。

    最后,又发现了一个通用版的访问链接,在iPhone6模式下去抓包,发现一个同样传输vkey的request,过程和上面差不多就不赘述了。

    URL:

    http://v.qq.com/iframe/player.html?vid=c01350046ds&tiny=0&auto=0

    14.png

    经测试发现,只要修改request中的vids就都可以拿到一个一段时长有效的vkey.所以呢,想要程序自动爬取这些播放源文件就不是难事了。

    package com.videoqq.jsoup;

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.URL;

    import java.util.Map;

    import com.asiainfo.util.DateFormatUtil;

    public class BlogSpider {

    public static void main(String[] args) {

    try {

    String requestUrl = "http://s.video.qq.com/get_playsource?id=2iqrhqekbtgwp1s&plat=2&type=1&data_type=2&video_type=3&plname=&otype=json&num_mod_cnt=20&callback=_jsonp_0_6914&_t=1474533056089";

    URL obj = new URL(requestUrl);

    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setReadTimeout(5000);

    conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");

    conn.addRequestProperty("User-Agent", "Mozilla");

    conn.addRequestProperty("Referer", "google.com");

    boolean redirect = false;

    int status = conn.getResponseCode();

    if (status != HttpURLConnection.HTTP_OK) {

    if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM

    || status == HttpURLConnection.HTTP_SEE_OTHER)

    redirect = true;

    }

    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    String inputLine;

    // 拿到整个html

    StringBuffer html = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {

    html.append(inputLine);

    }

    in.close();

    // 分词拿下所有URL

    String[] param = html.toString().split("playUrl");

    String[] vid = new String[param.length];

    // 第一个不含播放链接,舍弃

    for (int i = 1; i < param.length; i++) {

    param[i] = param[i].substring(3, 63);

    // System.out.println(param[i]);

    vid[i] = param[i].substring(49);

    // System.out.println(vid[i]);

    }

    // 真正播放地址

    for (int i = 1; i < vid.length; i++) {

    param[i] = "https://m.v.qq.com/x" + param[i].substring(15);

    // System.out.println(param[i]);

    }

    // 手动拿到的播放源,丢弃除vkey以外的参数

    String sourceMp4 = "http://36.250.4.15/vhot2.qqvideo.tc.qq.com/y0135k2wa6w.mp4?"

    + "vkey=0AA1C91314C9B82107F68C14832A8C9C2061397B3D0A7FE65D97AD7A8981849864FD71B933E290D3B737BB040F7DDAB570A057A1EA836F5DE95ADBA6D6A098274B8460F9261CB01B904BF2DAFC6012362B8AFF2443D00D50";

    // 首次需要手动拿到每个视频的播放源文件地址,因为存储没有规律,腾讯是分散服务器存的,我这边只演示一个

    String[] sourceMp4Group = { sourceMp4 };

    for (int i = 0; i < sourceMp4Group.length; i++) {

    // 执行更新替换vkey

    requestUrl = "http://h5vv.video.qq.com/getinfo?callback=tvp_request_getinfo_callback_340380&platform=11001&charge=0&otype=json&ehost=http%3A%2F%2Fv.qq.com&sphls=0&sb=1&nocache=0&_rnd=1474896074003&"

    + "vids=" + vid[i + 1]

    + "&defaultfmt=auto&&_qv_rmt=CTWS8OLbA17867igt=&_qv_rmt2=x6oMojAw144904luQ=&sdtfrom=v3010&callback=tvp_request_getinfo_callback_"

    + DateFormatUtil.get6num();

    obj = new URL(requestUrl);

    conn = (HttpURLConnection) obj.openConnection();

    conn.setReadTimeout(5000);

    conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");

    conn.addRequestProperty("User-Agent", "Mozilla");

    conn.addRequestProperty("Referer", "google.com");

    redirect = false;

    status = conn.getResponseCode();

    if (status != HttpURLConnection.HTTP_OK) {

    if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM

    || status == HttpURLConnection.HTTP_SEE_OTHER)

    redirect = true;

    }

    in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    html = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {

    html.append(inputLine);

    }

    in.close();

    param = html.toString().split(",");

    // for (int j = 0; j < param.length; j++) {

    // System.out.println(param[j]);

    // }

    String fvkey = param[38].split(":")[1];

    fvkey = fvkey.substring(1, fvkey.length() - 1);

    sourceMp4 += "?vkey=" + fvkey;

    System.out.println(sourceMp4);

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    Pic16.png

    15.png

    总结

    因为每个视频的播放源文件存储在的服务器地址不一样(同一系列视频也是),所以需要第一手动拿一下播放mp4地址,审查一下元素就可以,很快。

    我写了一个每五分钟访问链接测试vkey有效时常的告警,结果发现差不多六小时才会失效,所以设个TimeTask一般四小时刷新没问题的。

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.net.HttpURLConnection;

    import java.net.URL;

    import java.util.TimerTask;

    public class DeadTimeMonitorTask extends TimerTask {

    public void doVisit() {

    try {

    String url = "http://36.250.4.15/vhot2.qqvideo.tc.qq.com/y0135k2wa6w.mp4?vkey=0AA1C91314C9B82107F68C14832A8C9C2061397B3D0A7FE65D97AD7A8981849864FD71B933E290D3B737BB040F7DDAB570A057A1EA836F5DE95ADBA6D6A098274B8460F9261CB01B904BF2DAFC6012362B8AFF2443D00D50?vkey=A812D55B7E0FD9E40737D9C8E245C50A52B28D5F23F6036E28E275A644D88A4E433EC673B867AC25452CC3ACBAED1452144FA57890541CB63C250F7A52F9675BC8CABA9588EEFEA53AAA0854CB6AFF3A4ABB57CE06935DF8";

    URL obj = new URL(url);

    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setReadTimeout(5000);

    conn.addRequestProperty("Accept-Language", "en-US,en;q=0.8");

    conn.addRequestProperty("User-Agent", "Mozilla");

    conn.addRequestProperty("Referer", "google.com");

    System.out.println("Request URL ... " + url);

    boolean redirect = false;

    int status = conn.getResponseCode();

    if (status != HttpURLConnection.HTTP_OK) {

    if (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM

    || status == HttpURLConnection.HTTP_SEE_OTHER)

    redirect = true;

    }

    System.out.println("Response Code ... " + status);

    if (status == 403) {

    SendMail.sendMailfunc("检测失效时间:" + DateFormatUtil.getCurrentTime(),

    "失效结束时间:" + DateFormatUtil.getCurrentTime(), "wentao_wanna@126.com");

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    public static void main(String[] args) {

    //doVisit();

    }

    @Override

    public void run() {

    doVisit();

    }

    }

    知其然还需要知其所以然,大家可以去探究一下获取vkey的request参数,经发现是这个js

    https://vm.gtimg.cn/tencentvideo_v1/tvp/js/tvp.player_v2.js

    放到解密js的网站美化一下,然后搜索参数关键词,你会看懂的~

    此文章只用于大家技术研究,请不要用于违法的地方,转载请联系我!!

    展开全文
  • 点上方蓝字人工智能算法与Python大数据获取更多干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :新智元之前,李飞飞接受CNBC专访,针对AI...
  • 点上方蓝字人工智能算法与Python大数据获取更多干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :知乎:https://www.zhihu.c...
  • 点击上方蓝色字体,选择“设为星标”回复”资源获取更多资源大数据技术与架构点击右侧关注,大数据开发领域最强公众号!大数据真好玩点击右侧关注,大数据真好玩!Flink作为新一代的大数据处理引擎,其批流一体化...
  • 由于互联网的快速发展,互联网数据也呈几何倍增的形式增加,另外大数据的稳步发展,让大量的数据信息得到应用,那么怎样获取数据就变得尤为重要,用户需求的持续增加,爬虫代理IP快速崛起,各大企业在采集数据时为了...
  • 点上方蓝字人工智能算法与Python大数据获取更多干货在右上方···设为星标★,第一时间获取资源仅做学术分享,如有侵权,联系删除转载于 :新智元CPU 太差,玩游戏会怎样?会……死…...
  • 前言大数据是趋势,泄密和数据泄露时常发生。员工离职、文件外传、在线拷贝.....数据安全已经是每家公司必做功课。企业现状企业垂青“工作经历”和“自带资源”,“高薪挖人”被认为是企业事务快速增长、企业研制效果...
  • 点击上方蓝色字体,选择“设为星标”回复”资源获取更多惊喜大数据技术与架构点击右侧关注,大数据开发领域最强公众号!暴走大数据点击右侧关注,暴走大数据!整个Flink集群的角色分为Jobmanager和TaskManager以...
  • 中国农业科学院农业资源与农业区划研究所近期举办了中国航天农业农村遥感监测主题宣传活动,告诉公众中国航天与农业有着密不可分的联系,农业遥感从高分卫星中获取了大量的应用数据,从而更好地服务于中国农业事业。...
  • 分布式机器学习(一)之总体概述

    万次阅读 2019-08-26 21:18:31
    分布式机器学习就是解决怎样协调和利用大量的 GPU 集群,来完成深度学习模型的训练和获取好的收敛,达到相对高的性能。分布式机器学习涉及如何分配训练任务,调配计算资源,协调各个功能模块,以达到训练速度与精度...
  • 在这个大数据电商时代,想要比同行获取更好的资源或流量,那么你就必须要掌握比同行更多的信息。例如买家的需求,商品的排名,货源的供应等。了解了买家的需求,就可以利用需求打造卖点来优化主图、详情图、文案等。...
  • 攻击者怎样进行攻击?我该如何保护自己?全书共分7章。第1章讲述了DDoS的发展历史,梳理了探索期、工具化、武器化和普及化的过程。第2章介绍了DDoS攻击的主要来源—僵尸网络,对于其发展、组建和危害进行了讨论,并...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

怎样获取大数据资源