简单实现浏览器随机 User Agent

本文是关于如何修改浏览器的 User Agent,以及每次启动浏览器都能随机使用一个 User Agent,旨在实现基本的隐私保护。

User Agent

说到 User Agent,还有这么一段精彩的历史故事。如今服务提供方追踪用户的手段层出不穷,从 cookie浏览器指纹,cookie 还能轻易被清除,浏览器指纹包含的一系列信息就没那么容易清除了,危害性远远比 cookie 大。

浏览器指纹包含哪些信息

  • User Agent
  • 屏幕分辨率
  • 时区
  • 浏览器插件信息
  • 字体信息
  • Canvas
  • WebGL
  • HTTP ACCEPT
  • 其它

既然服务方能通过这些信息定位到你,为什么不是把这些信息都抹除掉,而是修改这些信息呢?浏览器指纹是浏览器的固有属性,要是把现代浏览器特性都禁用掉,最终只有你的浏览器是唯一没有指纹的,岂不是鹤立鸡群,一眼就能识别出你。那么,User Agent 是指纹信息里面重要的一环,我们在这一个环节做些「手脚」,就能大大降低追踪的准确率。

修改 User Agent?

有没有必要修改 User Agent 呢?对于隐私保护要求不高的网友,实在没必要改 User Agent。cookie 在隐私方面的问题比 User Agent 严重,因此更紧急的还是先学会如何管理 cookie。

对于有需要修改 User Agent 的网友,那如何修改呢?三大浏览器修改的方法都不一样,这里一一列举出来:

  1. Chrome
    启动时加上参数 --user-agent="put-your-user-agent-here 即可。
  2. Firefox
    在地址栏输入 about:config 敲回车,打开首选项界面
    点右键,新建一个字符串类型的“首选项”,该首选项的名称必须是 general.useragent.override,该首选项的【值】就是新的 User Agent
  3. IE
    regedit 打开注册表,编辑键值 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent ,输入新的 User Agent

如何看浏览器的 User Agent,狂点这里

相信改了 User Agent 不久之后,服务提供方又把你的帐号和这些指纹关联起来,同时你又不希望经常这样修改,这时咱们就可以用随机 User Agent 的方式来达到目的。接下来就以 Chrome 作为示例,实现启动 Chrome 都随机赋予一个 User Agent。

如何实现随机 User Agent?

首先,咱们可以收集一批 User Agent,每次都随机选取一个放到 --user-agent 参数来启动 Chrome,这样就能简单快速实现 Chrome 的随机 User Agent。

总不能每次都从收集的 User Agent 列表复制一个放到 --user-agent 参数,这时就可以利用脚本来处理,Unix* 下各种 Shell,Window 下的 VBScript、JScript。需要跨平台脚本时,Python 就派得上用场了,博主就以 Linux 下随机获取列表里的一个 User Agent 来启动 Chrome 为例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
import random

def user_agent():
user_agents = [
"Mozilla/5.0 (X11; Linux i686; rv:64.0) Gecko/20100101 Firefox/64.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0",
"Mozilla/5.0 (X11; Linux i586; rv:63.0) Gecko/20100101 Firefox/63.0",
"Mozilla/5.0 (Windows NT 6.2; WOW64; rv:63.0) Gecko/20100101 Firefox/63.0",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:62.0) Gecko/20100101 Firefox/62.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:10.0) Gecko/20100101 Firefox/62.0",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.13; ko; rv:1.9.1b2) Gecko/20081201 Firefox/60.0",
]
total = len(user_agents)
which = random.randint(0, total - 1)
return user_agents[which]

os.system("/usr/bin/chrome --user-agent='" + str(user_agent()) + "'")

以上短短几行就实现了随机获取一个 User Agent,并启动 Chrome,不得不感慨「人生苦短,我用 Python」,哈哈。

什么样的 User Agent 比较好?

上面也提到,指纹越是独特唯一,越能被追踪,所以我们应该选择大众化的 User Agent。这里有一个网站收集了各种浏览器的 User Agent,挑一些常用浏览器(如 Firefox、IE)放到 User Agent 列表里。

结尾

这里仅仅是简单实现了 Chrome 随机更换 User Agent 的方法,当然了,还有其它办法能实现,如果你有好的想法,欢迎留言交流。

相关链接