js相关
FserSuN
这个作者很懒,什么都没留下…
展开
-
浏览器爬虫数据采集可视化解析实现之单页面的可视化解析
1 前言在进行数据采集时,也即我们说的爬虫,抓到数据后通常需要进行解析。在PC端通常需要通过写代码进行解析。对于抓取业务较简单的场景,重复写代码完成这样的工作十分耗时。我们希望通过抓取到页面数据后,在页面上进行点选目标元素,就可以直接获得需要的数据,这样提高工作效率。我们在市面上见到的工具有Portia及八抓鱼等工具即通过选择的形式实现解析。本文将介绍实现的主要原理。只要明白了这些原理,其余类似...原创 2020-01-09 01:02:35 · 2168 阅读 · 2 评论 -
navigator plugins与mimetyps的模拟实现分析
1 调整数组类型和数组成员类型正常navigator.plugins对象数组中成员类型是Plugin,数组类型为PluginArray。正常navigator.mimeTypes数组成员类型是MimeType,数组类型mimeTypes。PluginArray {0: Plugin, 1: Plugin, 2: Plugin, Chrome PDF Plugin: Plugin, Chrome...原创 2019-12-24 21:28:48 · 1901 阅读 · 0 评论 -
HTML5 Canvas指纹及反追踪介绍
1 Canvas指纹的简介很多网站通过Canvas指纹来跟踪用户。browserleaks[1]是一个在线检测canvas指纹的网站。一般的指纹实现原理即通过canvas画布绘制一些图形,填写一些文字,随后获取画布的base64编码,再经过hash后得到。下面是一个简单的例子,最终调用toDataUrl会生成一段编码。// Text with lowercase/uppercase/punc...原创 2019-12-13 22:24:13 · 4361 阅读 · 1 评论 -
JavaScript反调试小技巧
1.函数重定义防止在当前上下文中使用输出语句观察结果。console.log("Hello World");var fake = function() {};window['console']['log'] = fake;console.log("You can't see me!");console.log("Normal function");// var original ...翻译 2019-12-03 22:28:44 · 1275 阅读 · 0 评论 -
NodeJs中generic-pool Error: Resource not currently part of this pool分析
1 背景当我们使用generic-pool在释放资源时,有可能会出现 Error: Resource not currently part of this pool异常。通过下面的代码创建一个资源池,来演示出现该异常的情况。const pool = require('generic-pool');const factory = { create: function() { ...原创 2019-11-26 21:47:42 · 929 阅读 · 0 评论 -
反爬虫之浏览器指纹上报代码的分析
背景在PC端反抓取过程中为了识别爬虫,其中一种方式通过上报请求者的设备信息,通过设备信息来识别是否是一个爬虫。当请求目标网站后,必须请求一个指纹计算脚本,该脚本收集设备信息,根据这些设备信息计算出一段数值并作为指纹,最终将计算结果发送给服务器。浏览器设备信息包括navigator.userAgent、window.screen、navigator.languages等。抓取者在抓取时通常会自...原创 2019-05-08 00:37:54 · 7109 阅读 · 6 评论 -
Puppeteer拦截器在数据抓取中的使用
Puppeteer拦截器在数据抓取中的使用Puppeteer提供的拦截器功能可以用来拦截请求,当访问页面时可以拦截无用请求,加快请求速度。拦截器使用示例下面是Puppeteer Api文档中关于拦截器的一个例子,下面针对这个例子说明相关问题及使用注意点。const puppeteer = require('puppeteer');puppeteer.launch().then(async...原创 2018-09-22 11:41:32 · 9556 阅读 · 0 评论 -
Nodejs linux环境下启动运行脚本
linux上部署Nodesjs服务,通常需要一些必要的工具,如node、pm2。线上运行需要预先检查好这些工具然后运行服务。下面以一个简单例子介绍基本流程,其它语言项目思路都是类似的。以前以centos为例,通过pm2 cluster模式部署node,首先需要检查node安装情况。node安装检查echo 'start to check node env:' if ! typ...翻译 2018-09-15 00:37:39 · 4492 阅读 · 0 评论 -
Nodejs静态导入功能简单实现
Nodejs静态导入功能简单实现使用Java会用到static import功能,这些调用一些工具类方法时可以避免去写类名,用nodejs也想到能不能这样用。下面是通过global对象来进行模拟的一种办法。首先看一下导入的一般用法//mymodule.jsfunction add(x,y) { return x + y}exports.add = add;var calc ...原创 2018-09-08 12:49:51 · 480 阅读 · 0 评论 -
Puppeteer错误TypeError: browser.newPage is not a function处理
Puppeteer错误TypeError: browser.newPage is not a function处理问题描述测试puppeteer使用,错误代码如下。 (async () => { console.log("puppeteer") const browser = puppeteer.laun...原创 2018-04-07 11:43:45 · 3343 阅读 · 0 评论 -
node.js频繁重启问题排查
node频繁重启问题排查系统通过pm2部署node,通过pm2 list命令观察状态时发现重启次数异常。 App name id mode pid status restart uptime cpu mem watching xxx 0 cluster 29430 online 217 32s 0% 33....原创 2018-04-05 11:53:30 · 8902 阅读 · 0 评论