常见爬虫指纹案例

什么是爬虫指纹?

  • 服务端能够获取到的客户端特征

常见指纹

IP

在用浏览器或其他发送请求的工具发送请求时,服务端能够获取客户端的ip地址
案例:
在这里插入图片描述

如图通过调用https://api.ipify.org/?format=json能将自身的外网ip返回出来。说明服务端能够拿到浏览器发起访问时ip。因为返回的数据本质上是仅仅是服务端生成了ip的数据并返回而已。

时区

// 获取当前用户的时区
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;

console.log(timezone);

在这里插入图片描述

UserAgent字符串

在这里插入图片描述

浏览器所设置的语言

在这里插入图片描述

屏幕分辨率

在这里插入图片描述

let screenWidth = window.innerWidth;
let screenHeight = window.innerHeight;

console.log(`Screen Width: ${screenWidth}px`);
console.log(`Screen Height: ${screenHeight}px`);

浏览器及其版本

在这里插入图片描述

function getBrowserInfo() {
  let userAgent = navigator.userAgent;
  let tem;
  let matches = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];

  if (/trident/i.test(matches[1])) {
    tem = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
    return 'IE ' + (tem[1] || '');
  }

  if (matches[1] === 'Chrome') {
    tem = userAgent.match(/\b(OPR|Edge)\/(\d+)/);
    if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
  }

  matches = matches[2] ? [matches[1], matches[2]] : [navigator.appName, navigator.appVersion, '-?'];
  if ((tem = userAgent.match(/version\/(\d+)/i)) != null) {
    matches.splice(1, 1, tem[1]);
  }

  return matches.join(' ');
}

console.log(getBrowserInfo());

浏览器窗口大小

在这里插入图片描述

let documentWidth = document.documentElement.clientWidth;
let documentHeight = document.documentElement.clientHeight;

console.log(`Document Width: ${documentWidth}px`);
console.log(`Document Height: ${documentHeight}px`);

设备所安装的字体

通过创建一个canvas元素,并在其中绘制文本,可以检测特定字体是否可用。如果文本以不同于默认字体的字体呈现,则可以推断该字体已安装。
在这里插入图片描述

function isFontInstalled(fontName) {
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');

  // 默认字体和要检测的字体
  const defaultFont = 'Arial';
  context.font = `72px ${defaultFont}`;
  const defaultMetrics = context.measureText('test string');

  context.font = `72px ${fontName},${defaultFont}`;
  const testMetrics = context.measureText('test string');

  // 如果默认字体和测试字体的宽度不同,则字体可能已安装
  return defaultMetrics.width !== testMetrics.width;
}

console.log(isFontInstalled('Times New Roman')); // 检测"Times New Roman"字体是否安装

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 反爬虫指纹是一种用于识别和阻止爬虫程序的技术手段。由于爬虫程序通常会频繁地访问网站或者使用自动化方式进行数据抓取,对于一些网站来说,这可能会造成服务器负载过高、资源浪费以及对用户正常访问造成影响。 为了应对这种情况,网站常常会使用反爬虫指纹技术来检测和阻止爬虫程序。Python 反爬虫指纹主要通过以下几种方式来进行: 1. 用户代理检测:网站会检测爬取请求中的用户代理(User-Agent),如果该用户代理与常见爬虫程序相匹配,就会判定为爬虫,并进行阻止。 2. IP 地址检测:网站会记录并分析用户请求的IP地址,如果同一个IP地址频繁地请求网页,就会判定为爬虫,并采取防御措施,如封禁该IP地址。 3. 访问频率检测:网站会统计同一个用户访问同一个页面的时间间隔,如果时间间隔过短,就会判定为爬虫,并采取相应的反爬虫策略。 4. Cookie 检测:网站通过设置和检查 Cookie,来判断一个请求是否是爬虫程序生成的。如果 Cookie 的生成方式和用途与正常用户存在差异,就会判定为爬虫。 为了规避这些反爬虫技术的检测,开发者可以通过设置合理的用户代理、合理延长请求时间间隔、处理 Cookie 等方式来尽量模拟正常用户的行为。此外,还可以使用一些第三方库或框架,如Scrapy等,提供更强大的爬虫功能和反反爬虫技术。需要注意的是,爬取网站数据时,应遵守相关的法律法规以及网站的规定,尊重网站的合法权益,避免给网站造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值