vlambda博客
学习文章列表

【指纹浏览器系列】八、java、go、c#、php、rust更改浏览器指纹信息

指纹浏览器系列教程目录

一、指纹浏览器的原理与应用

二、浏览器指纹的检测与对抗的办法

三、更多的检测手段与指纹浏览器选购方案

四、命令行形式浏览器多开解决方案

五、浏览器插件形式改变指纹

六、node.js库Puppeteer改变浏览器指纹信息

七、python改变浏览器指纹信息

八、java、go、c#、php、rust更改浏览器指纹信息

九、编写自己的指纹浏览器以及指纹信息来源

十、闲话聊一聊指纹浏览器的用途

java、go、c#、php、rust更改浏览器指纹信息

本篇文章之所以把他们几个弄一起,是因为他们的CDP操纵的库都使用的人相对不算多,并且改变浏览器指纹的方法跟前面的pyppeteer大同小异,都是加载puppeteer的stealth插件里的js代码。

Java

selenium这个项目就是用Java写的,所以Java调用selenium最方便,具体如何加载stealth的js代码参考前面python里调用selenium方法。

Go

go有两个比较知名的CDP库。

1. chromdp

它加载stealth的js代码的方式在issue里:https://github.com/chromedp/chromedp/issues/396

里面也包含了第三方作者写的插件。

2. rod

作者自己也跟python一样翻译了stealth的js插件,改成了go的。



C#

puppeteer-sharp

此款插件是所有非node.js原版完成度最高的,但是也有无法自定义指纹参数的问题。


Php

puphpeteer

曾经尝试过,我想说的是但凡你会任何其他语言都不要用PHP写这方面东西。

Rust

rust-headless-chrome

chromiumoxide

https://github.com/mattsse/chromiumoxide

rust真的没接触过,只是分享下两个start比较多的库,最近留意到cloudflare居然也有开发一款基于rust语言的CDP库,还是蛮期待rust的后续发展的。



总结


其实这些调用的库大部分也都支持Firefox,那为什么我提到的都是以chromium为基础的举例呢?

答案是因为,chromium内核的浏览器通过命令行可以设置非常多的参数,而这些CDP库调用Firefox有时候就是差那么一两个功能没法使用,导致你非常难受。

本文只是写了一些相对主流的编程语言,并且里面的库也是有持续更新并且star相对多的库。其他的编程语言或库有的实在是没接触过,这里就不班门弄斧了。

我个人更倾向于解释型语言来写浏览器自动化程序,因为网站的页面是会随时变化,而解释型语言的开发效率要比编译型语言快很多,当网站内容发生变化,可以做到快速跟进,这样也会更方便些。