
爬虫数据抓取
FserSuN
这个作者很懒,什么都没留下…
展开
-
反爬虫中chrome无头浏览器的几种检测与绕过方式
chrome无头浏览器的几种检测方式本文测试使用的chrome版本为 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3514.2 Safari/537.361.UserAgent检测无头模式下的UA会带有HeadlessChrome关键...翻译 2018-08-18 02:06:34 · 33809 阅读 · 10 评论 -
浏览器端反爬虫特征收集之字体检测
1 背景介绍现今的反爬虫系统主要思路是通过收集访问者的设备特征和行为,并在后台进行行为与特征分析识别出异常流量,达到反爬虫的目的。这些特征中字体也是一项重要的采集项。即收集一款浏览器当前有多少可用的字体。我们在看前端特征收集脚本常会见到如下的代码[1]。通过设置给一段文本的标签设置不同的字体样式,随后比较宽高,来判断字体是否存在。var Detector = function() { ...原创 2019-08-03 00:34:36 · 923 阅读 · 0 评论 -
Puppeteer设置浏览器代理的三种思路
0 背景Puppeteer是google推出的操作浏览器的框架。当我们通过框架操作浏览器去访问页面通常需要设置代理。本文简要总结设置代理的方式。1 通过启动参数设置代理我们通过puppeteer启动浏览通常可以指定参数,通过–proxy-server参数[1]指定代理。http及https请求的将通过代理服务器访问。若每次需要更换代理就需要重新通过launch方法来启动浏览器。 co...翻译 2019-06-30 17:29:37 · 19753 阅读 · 7 评论 -
浏览器数据抓取属性自定义修改
背景利用浏览器进行数据抓取需要改在环境,反爬虫中chrome无头浏览器的几种检测与绕过方式介绍了修改属性,本文总结修改方法。在浏览中包含各种浏览器对象与网页元素对象,环境修改就是对这两类对象进行修改。Js中属性修改要么是修改该对象的自身属性,要么是修改该对象原型属性。当访问一个属性时,如果对象不存在该属性,那么在原型中去查找。因此修改就很明确了,改对象属性或原型属性。如果通过构造器修改,...原创 2019-06-05 21:49:26 · 2934 阅读 · 0 评论 -
通过界面调试chrome无头浏览器
1 概述在无头浏览器中开发应用时,界面状态通常不可见。这时我们可以通过debug模式启动无头浏览器,并新打开一个有界面浏览器来访问无头浏览器,这样就可以在有界面状态下看到无头浏览器的情况。2 配置debug模式启动一个无头浏览器,并在9222端口监听chrome --remote-debugging-port=9222 --headless --disable...翻译 2019-05-12 11:36:43 · 6705 阅读 · 1 评论 -
反爬虫之浏览器指纹上报代码的分析
背景在PC端反抓取过程中为了识别爬虫,其中一种方式通过上报请求者的设备信息,通过设备信息来识别是否是一个爬虫。当请求目标网站后,必须请求一个指纹计算脚本,该脚本收集设备信息,根据这些设备信息计算出一段数值并作为指纹,最终将计算结果发送给服务器。浏览器设备信息包括navigator.userAgent、window.screen、navigator.languages等。抓取者在抓取时通常会自...原创 2019-05-08 00:37:54 · 7365 阅读 · 6 评论 -
爬虫中注册数据延迟使用场景处理
1 背景爬虫在数据抓取时会先破解APP或PC上的数据请求流程。为了防御这种爬虫,通常在APP或PC页面上附带有指纹收集与设备注册的请求。只有指纹属于正常设备或注册信息发送后才能正常访问数据。否则请求方收到的就是虚假数据。作为反爬方,目标就是就要增加爬虫开发者的破解及开发难度。因此使用资源延迟是一种干扰爬虫开发者的有效手段。2 资源注册延迟生效在APP启动或PC页面打开时,会向后台发送设备或浏...原创 2019-04-20 00:48:05 · 729 阅读 · 0 评论 -
Puppeteer通过evaluate执行脚本获取cookie
1 应用背景通常我们希望在页面加载一些脚本然后获取脚本生成的cookie。这里考虑使用page.setContent方法,其中script标签内部包含设置cookie的代码。最后通过执行document.cookie来获取cookie。(async () => { const browser = await puppeteer.launch({ "executa...原创 2019-02-16 09:37:01 · 9672 阅读 · 1 评论 -
Js反爬虫之转义符对名称混淆
1.背景介绍反爬虫cookie反爬是一种常用的手段。计算好相关数值,并通过document.cookie设置,最终提交给后端用来检查是否是爬虫。而破解方式通常是通过搜索document.cookie,并找出cookie的生成方式。为了加大破解难度,一种方式是隐藏document.cookie,让破解者花更多时间,增加难度。同理所有不希望被直接看到的重要符号都可以通过此方法进行混淆。2. 通过...原创 2019-02-07 12:21:11 · 1949 阅读 · 0 评论 -
Puppeteer调用page对象evaluate方法产生的Execution context was destroyed错误处理
Execution context was destroyed产生的场景在NodeJs中使用Puppeteer中Page对象的evaluate方法执行脚本,深入使用后一定遇到过Error: Execution context was destroyed 错误。这通常发生在浏览器正在执行一个任务,紧接使用方并发提交了另一个脚本到浏览器,导致浏览器发生跳转。这时第一次提交的任务会抛出异常,产生该错误...原创 2018-12-07 00:29:35 · 12066 阅读 · 4 评论 -
heritrix 3.3系统启动缺少jar包及异常问题处理
本地使用jdk版本是1.8。开始部署环境,找的教程都下载的是3.1或3.0安装包,但运行后会提示如下错误。Exception in thread "main" java.lang.NoClassDefFoundError: sun/security/tools/KeyTool at org.archive.crawler.Heritrix.useAdhocKeystore(He...原创 2018-11-17 10:40:56 · 624 阅读 · 0 评论 -
Puppeteer拦截器在数据抓取中的使用
Puppeteer拦截器在数据抓取中的使用Puppeteer提供的拦截器功能可以用来拦截请求,当访问页面时可以拦截无用请求,加快请求速度。拦截器使用示例下面是Puppeteer Api文档中关于拦截器的一个例子,下面针对这个例子说明相关问题及使用注意点。const puppeteer = require('puppeteer');puppeteer.launch().then(async...原创 2018-09-22 11:41:32 · 9814 阅读 · 0 评论 -
Chrome调试通过事件监听获取携程目的地弹出层HTML代码
问题概述登录携程首页 http://www.ctrip.com/ 单机目的地对话框会出现城市列表。如下图所示。我们希望一次得到所有城市代码。通过chrome调试工具尝试选择这个对框画,并在Elements标签内看到对应的HTML代码。但点击下图中的元素选择按钮时对话框就消失了,无法被选择,并查看元素。借助事件监听选中弹出层设置单击事件监听: 1. EventLis...原创 2018-09-05 00:29:52 · 1290 阅读 · 0 评论 -
Puppeteer自动化测试鼠标键盘基本操作及注意事项
通过Puppeteer Api来控制Chrome进行数据抓取或自动化测试通常模拟鼠标或键盘的操作。接下来通过一些实例来介绍这些基本操作。如下的测试为了方便观察结果 headless均设置为false,即有界面状态下测试。puppeteer版本为0.1.7,chrome版本为5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KH...原创 2018-08-28 00:06:31 · 13069 阅读 · 2 评论 -
反爬虫之令无头浏览器chrome无法执行的一种方式
chrome develper模式令代码无法执行的一种方式本文测试环境的版本信息如下:Google Chrome 66.0.3359.181 (正式版本) (64 位)修订版本 a10b9cedb40738cb152f8148ddab4891df876959-refs/branch-heads/3359@{#828}操作系统 Mac OS XJavaScript ...原创 2018-05-31 00:51:18 · 4090 阅读 · 5 评论