函数:随机生成User-Agent 字符串,用于模拟不同的浏览器和操作系统类型,增加爬虫的隐蔽性

发布时间 2023-07-13 13:54:02作者: 明媚的夏午
1 def get_ua(self):
2         first_num = random.randint(99, 103)
3         third_num = random.randint(0, 5060)
4         fourth_num = random.randint(0, 140)
5         os_type = ['(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)', '(Macintosh; Intel Mac OS X 10_14_5)']
6         chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num)
7         ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36', '(KHTML, like Gecko)', chrome_version, 'Safari/537.36'])
8         return ua

返回结果           :Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.2631.83 Safari/537.36

浏览器复制结果:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36
 
解析:

这个函数是一个 Python 类的方法,返回一个随机生成的 User-Agent 字符串,用于模拟浏览器请求时的 User-Agent 头部信息。下面是对该函数的解释:

  • first_num = random.randint(99, 103):生成一个范围在 99 到 103 之间的随机整数,作为 Chrome 浏览器的主版本号。
  • third_num = random.randint(0, 5060):生成一个范围在 0 到 5060 之间的随机整数,作为 Chrome 浏览器的次版本号。
  • fourth_num = random.randint(0, 140):生成一个范围在 0 到 140 之间的随机整数,作为 Chrome 浏览器的修订版本号。
  • os_type = ['(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)', '(Macintosh; Intel Mac OS X 10_14_5)']:定义了一个包含多个操作系统类型的列表。
  • chrome_version = 'Chrome/{}.0.{}.{}'.format(first_num, third_num, fourth_num):使用前面生成的主、次、修订版本号,生成 Chrome 浏览器的版本号字符串。
  • ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36', '(KHTML, like Gecko)', chrome_version, 'Safari/537.36']):使用前面生成的操作系统类型和浏览器版本号,拼接出完整的 User-Agent 字符串。其中,Mozilla/5.0 是一个固定的字符串,表示浏览器类型;AppleWebKit/537.36 和 Safari/537.36 分别表示浏览器内核和 Safari 浏览器的版本号。
    使用这个函数可以方便地生成随机的 User-Agent 字符串,用于模拟不同的浏览器和操作系统类型,增加爬虫的隐蔽性。