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网络编程之TCP通信实例和socketserver框架使用例子

    python网络编程之TCP通信实例和socketserver框架使用例子

    这篇文章主要介绍了python网络编程之TCP通信实例和socketserver框架使用例子,需要的朋友可以参考下
    2014-04-04
  • Python字符串处理实现单词反转

    Python字符串处理实现单词反转

    这篇文章主要为大家详细介绍了Python字符串处理实现单词反转的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 浅析如何使用Python构建桌面图片浏览器

    浅析如何使用Python构建桌面图片浏览器

    这篇文章主要为大家详细介绍了如何使用Python构建一个简单的桌面图片浏览器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • Python基于tkinter canvas实现图片裁剪功能

    Python基于tkinter canvas实现图片裁剪功能

    这篇文章主要介绍了Python基于tkinter canvas实现图片裁剪功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 如何用pandas读取一个文件或某个文件夹下所有文件

    如何用pandas读取一个文件或某个文件夹下所有文件

    这篇文章主要介绍了如何用pandas读取一个文件或某个文件夹下所有文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python中def()函数的实战练习题

    Python中def()函数的实战练习题

    def是define的缩写,用来自定义函数,下面这篇文章主要给大家介绍了关于Python中def()函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Python Allure库的使用示例教程

    Python Allure库的使用示例教程

    Python Allure库是一个实用可靠的测试报告框架,它几乎可以与Python的其他库和框架无缝集成,利用Python Allure库,可以轻松生成易于阅读的测试报告,让测试变得更加简单便捷,本文主要介绍Python Allure库的使用,感兴趣的朋友一起看看吧
    2023-12-12
  • numpy求矩阵的特征值与特征向量(np.linalg.eig函数用法)

    numpy求矩阵的特征值与特征向量(np.linalg.eig函数用法)

    这篇文章主要介绍了numpy求矩阵的特征值与特征向量(np.linalg.eig函数用法),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 使用keras2.0 将Merge层改为函数式

    使用keras2.0 将Merge层改为函数式

    这篇文章主要介绍了使用keras2.0 将Merge层改为函数式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python网络爬虫精解之正则表达式的使用说明

    python网络爬虫精解之正则表达式的使用说明

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
    2021-09-09

最新评论