python运用requests模拟浏览器发送请求过程

 更新时间:2025年07月29日 11:31:58   作者:高级测试工程师欧阳  
模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需求选择合适工具

使用requests库模拟浏览器请求

requests 是一个简单易用的 HTTP 库,可以模拟浏览器的请求行为。

通常需要设置请求头和 Cookies 来伪装成浏览器。

import requests

url = "https://example.com"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
}
cookies = {"session_id": "123456789"}

response = requests.get(url, headers=headers, cookies=cookies)
print(response.text)

使用selenium自动化浏览器操作

selenium 可以控制真实浏览器(如 Chrome、Firefox)进行自动化操作,适合需要执行 JavaScript 或处理动态内容的场景。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")  # 无头模式
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")
print(driver.page_source)
driver.quit()

使用playwright进行高级浏览器模拟

playwright 是一个现代浏览器自动化工具,支持 Chromium、Firefox 和 WebKit,提供了更强大的功能。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # 非无头模式
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.content())
    browser.close()

设置代理和超时

如果需要通过代理发送请求或控制超时时间,可以在请求中添加相关参数。

proxies = {
    "http": "http://10.10.1.10:3128",
    "https": "http://10.10.1.10:1080",
}
timeout = 10  # 超时时间(秒)

response = requests.get(url, headers=headers, proxies=proxies, timeout=timeout)

处理动态加载内容

某些网站通过 JavaScript 动态加载内容,可以使用 seleniumplaywright 等待元素加载完成。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver.get("https://example.com")
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "dynamic-content"))
)
print(element.text)

模拟表单提交

如果需要提交表单数据,可以使用 requests 发送 POST 请求。

data = {
    "username": "test",
    "password": "123456",
}
response = requests.post(url, data=data, headers=headers)
print(response.text)

通过以上方法,可以模拟浏览器发送请求并获取响应内容。根据实际需求选择合适的工具和技术方案。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python 移除字符串尾部的数字方法

    python 移除字符串尾部的数字方法

    今天小编就为大家分享一篇python 移除字符串尾部的数字方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解Python中的循环语句的用法

    详解Python中的循环语句的用法

    这篇文章主要介绍了详解Python中的循环语句的用法,循环语句是学习各个编程语言的最基本的基础知识,需要的朋友可以参考下
    2015-04-04
  • python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)

    python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)

    这篇文章主要介绍了python为Django项目上的每个应用程序创建不同的自定义404页面,本文给出了最佳答案,大家可以跟随小编一起学习下
    2020-03-03
  • python 字典(dict)按键和值排序

    python 字典(dict)按键和值排序

    下面小编就为大家带来一篇python 字典(dict)按键和值排序。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • python+unittest+requests实现接口自动化的方法

    python+unittest+requests实现接口自动化的方法

    这篇文章主要介绍了python+unittest+requests实现接口自动化的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • python获取Pandas列名的几种方法

    python获取Pandas列名的几种方法

    这篇文章主要介绍了python获取Pandas列名的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python递归函数特点及原理解析

    Python递归函数特点及原理解析

    这篇文章主要介绍了Python递归函数特点及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 使用Python自动备份重要文件

    使用Python自动备份重要文件

    在数字化时代,数据是非常宝贵的资源,从个人照片和文档到重要的工作文件,我们的数字资产对我们来说越来越重要,下面我们就来看看如何使用Python实现自动备份重要文件吧
    2024-11-11
  • python 字典d[k]中key不存在的解决方案

    python 字典d[k]中key不存在的解决方案

    本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • centos6.4下python3.6.1安装教程

    centos6.4下python3.6.1安装教程

    这篇文章主要为大家详细介绍了centos6.4下python3.6.1的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论