Chromium内核是许多现代浏览器的基础,如Chrome和Edge。在进行网络爬取、自动化测试或数据挖掘等任务时,使用Puppeteer或Playwright等工具时,浏览器指纹的重要性不言而喻。本文将介绍如何修改Chromium内核以及浏览器指纹伪装的方法,以构建一个抗指纹的浏览环境。
首先,了解如何修改Chromium内核是至关重要的。您可以从Chromium源代码仓库中获取最新的代码,并根据需要进行定制修改。这样可以让您控制浏览器的行为,包括用户代理、Cookie管理和JavaScript执行方式等。
其次,浏览器指纹伪装是保护个人隐私和防止被检测出自动化行为的关键。通过修改浏览器的User-Agent、Canvas指纹、WebRTC配置等信息,可以减少被网站识别的可能性。例如,使用Puppeteer或Playwright可以通过设置特定的选项来修改User-Agent,并且可以通过使用第三方库来生成随机的Canvas指纹。
最后,搭建一个抗指纹的浏览环境需要综合考虑多个因素。除了修改Chromium内核和伪装浏览器指纹外,还应注意其他可能泄露个人信息的因素,如浏览器插件和操作系统配置等。定期更新浏览器和操作系统也是保持安全的重要步骤。
总之,通过了解如何修改Chromium内核和实施浏览器指纹伪装方法,您可以构建一个更加隐私安全和抗指纹的浏览环境,从而更好地保护个人信息和确保自动化任务的顺利执行。
原项目地址:
python:https://github.com/musiclover789/luna_python
golang:https://github.com/musiclover789/luna
import time
import devtools.browser as luna
import devtools.page as page
import common.server_management as init
"""
测试目的:希望你可以正常使用指纹
"""
def main():
"""
start函数是启动 服务、你可以选择传入参数;就是端口号、你也可以不传入、如果你不传入 程序会自动选择一个未被占用的端口。
如果你不清楚他有什么用、可以不予理睬
"""
if not init.start(9876):
print("启动服务-失败")
"""
chromium_path 是必须要传入的参数、就是你抗指纹浏览器所在的路径 如 c:\\luna\\Default\\chrome.exe
"""
chromium_path = "/Users/hongyuji/Documents/workspace/golang/Chromium.app/Contents/MacOS/Chromium"
args = [
"--luna_cavans_random_str=B3B4",
"--luna_user_agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
"--luna_platform=win64",
"--luna_languages=en-GB",
"--luna_deviceMemory=8",
"--luna_UNMASKED_VENDOR_WEBGL=Intel Corporation",
"--luna_UNMASKED_RENDERER_WEBGL=Intel(R) UHD Graphics 620",
"--luna_GL_VERSION=WebGL 1.0 (OpenGL ES 3.0 Intel(R) UHD Graphics 620)",
# 仅是示例、更多指纹设置参考luna golang版本文档-都是一样的
] # 示例指纹列表,
chrome_id = luna.new_browser(chromium_path, fingerprint=args)
time.sleep(1)
page_id = page.open_page(chrome_id, "http://www.baidu.com")
print("便于您查看指纹、暂停1分钟")
time.sleep(60)
page.close_page(page_id)
# 关闭浏览器
print("关闭浏览器", luna.close_browser(chrome_id))
if __name__ == "__main__":
main()
另外他支持多种适合的应用场景,有python和golang两个版本
package test_case
import (
"fmt"
"github.com/musiclover789/luna/base_devtools/network"
"github.com/musiclover789/luna/base_devtools/page"
"github.com/musiclover789/luna/devtools"
"github.com/musiclover789/luna/luna_utils"
"github.com/musiclover789/luna/protocol"
"sync"
"testing"
"time"
)
/***
官方文档
https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-navigate
*/
func TestDouyin(t *testing.T) {
//启动前先杀死其他的chromium进程;为了防止程序以及停止但是依然在内存中贮存;
//他会根据你的系统不同,使用命令行的命令进行杀死进程
luna_utils.KillProcess()
/********************************/
chromiumPath := "/Users/hongyuji/Documents/workspace/golang/Chromium.app/Contents/MacOS/Chromium"
_, browserObj := devtools.NewBrowser(chromiumPath, &devtools.BrowserOptions{
CachePath: luna_utils.CreateCacheDirInSubDir("/Users/hongyuji/Documents/workspace/golang/cache"),
Headless: false,
})
//第一组获取方式
var wg sync.WaitGroup // 同步等待
wg.Add(1) // 增加等待的数量
err, p1 := browserObj.OpenPageAndListen("https://live.douyin.com/865250281495", func(devToolsConn *protocol.DevToolsConn) {
//第一个处理
devToolsConn.ShowLogJson(false)
page.PageEnable(devToolsConn)
network.EnableNetwork(devToolsConn)
network.RequestResponseAsync(devToolsConn, func(requestId string, request, response map[string]interface{}) {
fmt.Println(luna_utils.FormatJSONAsString(request), luna_utils.FormatJSONAsString(request))
//network.GetResponseBody(devToolsConn,requestId,time.Minute)
})
})
wg.Wait() // 等待回调函数执行完成
fmt.Println(err, p1)
time.Sleep(1 * time.Hour)
}