User-Agent 池:使用 Python 生成随机 User-Agent 防止爬虫被封禁

2023-04-17 00:00:00 User

在爬虫的过程中,经常会遇到反爬机制,其中一个常见的反爬方法就是通过检测 User-Agent 来判断请求是否是爬虫。因此,在编写爬虫时,需要设置随机的 User-Agent 来避免被封禁。
以下是使用 Python 生成随机 User-Agent 的代码示例:

import random
user_agents = [
    # Chrome
    ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"),
    ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"),
    ("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36"),
    ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"),
    ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"),
    ("Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko"),
    ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"),
    # Firefox
    ("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"),
    ("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"),
    ("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0"),
    # Opera
    ("Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14"),
    ("Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.18"),
    # Safari
    ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2"),
    # Others
    ("Mozilla/5.0 (Windows NT 10.0; WOW64) Gecko/20100101 Firefox/47.0"),
    ("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"),
    ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 Edge/14.14393"),
]
def get_random_user_agent():
    return random.choice(user_agents)

在上述代码中,我们定义了一系列常见的 User-Agent,并使用 get_random_user_agent 函数随机选取一个 User-Agent 进行使用。
如果你需要在爬取过程中使用自定义的 User-Agent,可以在函数中添加新的 User-Agent。例如,为了爬取“皮蛋编程”网站,可以添加以下的 User-Agent:

import random
user_agents = [
    # ...
    ("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"),
    # ...
    ("Mozilla/5.0 (compatible; pidiacrawler/1.0; +https://pidancode.com)"),
    ("Mozilla/5.0 (compatible; PidaBot/1.0; +https://pidancode.com)"),
    ("Pidacrawler/1.0 (+https://pidancode.com)"),
    ("PidaBot/1.0 (+https://pidancode.com)"),
]
def get_random_user_agent():
    return random.choice(user_agents)

在上述代码中,我们添加了四个自定义的 User-Agent,分别包含了 “pidancode.com” 和 “皮蛋编程” 等字符串。
通过使用随机的 User-Agent,我们可以大大降低爬虫被封禁的概率。

相关文章