Python爬虫小技巧之伪造随机的User-Agent

下面我会详细讲解Python爬虫中伪造随机User-Agent的完整攻略,包含以下几个步骤:

1. 了解User-Agent

在进行爬虫时,我们通常需要向目标网站发送请求,根据传递的User-Agent信息,目标网站会返回不同的内容,因此在编写爬虫时,我们通常要进行User-Agent的设置。User-Agent是一个描述浏览器的字符串,包含了浏览器的类型、版本、操作系统等信息。

2. 随机生成User-Agent

为了防止被爬虫识别或者被封IP,我们通常需要随机生成User-Agent,这样每次请求都会带着不同的User-Agent,从而避免被目标网站拦截。下面是Python中随机生成User-Agent的代码:

import random

user_agent_list = [
    "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; rv:54.0) Gecko/20100101 Firefox/54.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
    ]

user_agent = random.choice(user_agent_list)

在上面的代码中,我们定义了一个user_agent_list列表,包含了多个不同的User-Agent字符串,然后使用random.choice()方法,随机从列表中选择一个User-Agent字符串。

3. 设置请求头

最后,我们需要在请求头中添加User-Agent信息。下面是一个完整的示例代码:

import requests
import random

url = "https://www.example.com"
user_agent_list = [
    "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; rv:54.0) Gecko/20100101 Firefox/54.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
    ]

user_agent = random.choice(user_agent_list)
headers = {'User-Agent': user_agent}
response = requests.get(url, headers=headers)

在上面的代码中,我们随机选择了一个User-Agent,然后创建了一个headers字典,设置了User-Agent的值。最后,我们使用requests.get()方法发送请求,并将headers作为请求头传递进去。这样就完成了伪造随机User-Agent的操作。

接下来,我会通过两个具体的示例,说明如何在Python爬虫中使用伪造随机User-Agent的技巧。

示例1:使用伪造随机User-Agent获取一张图片

下面的示例展示了如何使用随机User-Agent获取一张图片:

import requests
import random
import os

image_url = "https://www.example.com/image.jpg"
user_agent_list = [
    "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; rv:54.0) Gecko/20100101 Firefox/54.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
    ]

user_agent = random.choice(user_agent_list)
headers = {'User-Agent': user_agent}
response = requests.get(image_url, headers=headers)

if response.status_code == 200:
    with open(os.path.basename(image_url), 'wb') as f:
        f.write(response.content)
        print('Image saved successfully.')
else:
    print('Failed to download image.')

在上面的代码中,我们首先定义了一个图片的URL,并随机选择了一个User-Agent,然后发送GET请求获取图片内容。如果请求成功,我们就将图片保存到本地,并输出"Image saved successfully."的信息。如果请求失败,我们则输出"Failed to download image."的信息。这样就完成了使用伪造随机User-Agent获取图片的操作。

示例2:使用伪造随机User-Agent获取网站HTML内容

下面的示例展示了如何使用随机User-Agent获取网站的HTML内容:

import requests
import random

url = "https://www.example.com"
user_agent_list = [
    "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; rv:54.0) Gecko/20100101 Firefox/54.0",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
    ]

user_agent = random.choice(user_agent_list)
headers = {'User-Agent': user_agent}
response = requests.get(url, headers=headers)

if response.status_code == 200:
    print(response.text)
else:
    print('Failed to get HTML content.')

在上面的代码中,我们首先定义了一个网站的URL,并随机选择了一个User-Agent,然后发送GET请求获取网站的HTML内容。如果请求成功,我们就输出网站的HTML内容。如果请求失败,我们则输出"Failed to get HTML content."的信息。这样就完成了使用伪造随机User-Agent获取网站HTML内容的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫小技巧之伪造随机的User-Agent - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python threading.local代码实例及原理解析

    下面就为大家详细讲解“Python threading.local代码实例及原理解析”的攻略。 什么是Python threading.local? 在Python多线程编程中,每个线程都操作着相同的数据,但是为了线程安全,我们必须把这些数据做好区分。Python threading.local提供了一个简单的方法,可以为每个线程提供自己的私有数据空间。 P…

    python 2023年5月19日
    00
  • Python文件夹与文件的相关操作(推荐)

    针对Python文件夹与文件的相关操作,推荐的做法是使用Python内置的os、shutil库,具体攻略如下: 一、Python操作文件夹 1.创建目录(文件夹) import os path = "./testdir" if not os.path.exists(path): os.makedirs(path) print("…

    python 2023年6月2日
    00
  • 如何解决这个 python 和 django 设置导入特性?

    【问题标题】:How can I resolve this python and django settings import idiosyncrasy?如何解决这个 python 和 django 设置导入特性? 【发布时间】:2023-04-07 15:14:01 【问题描述】: 我有这样的文件布局:settings/—-__init__.py—…

    Python开发 2023年4月8日
    00
  • Python中用altzone()方法处理时区的教程

    下面是我为你提供的Python中使用altzone()方法处理时区的攻略,内容如下: 什么是时区? 时区是一个地区用来参考同一时间的时间标准,这些标准通常是以格林威治时间为基础,确定了一些区域的标准时间。由于不同的地方有不同的夏令时规则、不同时改变时区或不同的历史时间偏移等原因,所以同一个时刻的本地时间在不同的时区可能并不相同。 Python中处理时区的常用…

    python 2023年6月2日
    00
  • Python办公自动化之Excel介绍

    下面我来为您详细讲解一下“Python办公自动化之Excel介绍”的完整实例教程。 1. Excel文件和工作表 Excel文件是由一个或多个工作表组成。每个工作表都是由行和列交叉形成的大量单元格组成。我们可以在这些单元格中输入文本、数字和公式等数据。 2. Python操作Excel Python中有许多库可以用来操作Excel文件,比如openpyxl、…

    python 2023年5月13日
    00
  • python合并多个excel的详细过程

    下面是针对Python合并多个Excel的详细过程的完整实例教程。 1. 简介 在日常工作中,我们经常需要处理多个Excel表格。如果想要把这些表格汇总到一个Excel中,使用Python来进行自动化处理是一个不错的选择。本文将介绍如何使用Python合并多个Excel的详细过程。 2. 实现过程 2.1 安装依赖包 在使用Python合并多个Excel之前…

    python 2023年5月13日
    00
  • 一文详解如何创建自己的Python装饰器

    如何创建自己的Python装饰器 装饰器是 Python 中非常强大的功能之一。Python 装饰器可以在不修改函数的源代码的情况下,动态地修改函数的行为。以下是如何创建自己的 Python 装饰器的详细攻略。 创建装饰器的基本语法 Python 的装饰器实际上是一个函数,它可以接收一个其它函数作为参数并返回一个新的、修改过的函数。 def my_decor…

    python 2023年5月18日
    00
  • python同时遍历两个list用法说明

    在Python中,有时需要同时遍历两个列表,可以使用zip()函数来实现。本文将详细讲解“Python同时遍历两个list用法说明”,并提供两个示例说明。 使用zip()函数 zip()函数可以将多个列表中的元素一对应,返回一个元组的列表。例如: list1 = [1, 2, 3] list2 = [‘a’, ‘b’,c’] result = zip(lis…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部