python運(yùn)用requests模擬瀏覽器發(fā)送請(qǐng)求過(guò)程
使用requests庫(kù)模擬瀏覽器請(qǐng)求
requests
是一個(gè)簡(jiǎn)單易用的 HTTP 庫(kù),可以模擬瀏覽器的請(qǐng)求行為。
通常需要設(shè)置請(qǐng)求頭和 Cookies 來(lái)偽裝成瀏覽器。
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自動(dòng)化瀏覽器操作
selenium
可以控制真實(shí)瀏覽器(如 Chrome、Firefox)進(jìn)行自動(dòng)化操作,適合需要執(zhí)行 JavaScript 或處理動(dòng)態(tài)內(nèi)容的場(chǎng)景。
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") # 無(wú)頭模式 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進(jìn)行高級(jí)瀏覽器模擬
playwright
是一個(gè)現(xiàn)代瀏覽器自動(dòng)化工具,支持 Chromium、Firefox 和 WebKit,提供了更強(qiáng)大的功能。
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) # 非無(wú)頭模式 page = browser.new_page() page.goto("https://example.com") print(page.content()) browser.close()
設(shè)置代理和超時(shí)
如果需要通過(guò)代理發(fā)送請(qǐng)求或控制超時(shí)時(shí)間,可以在請(qǐng)求中添加相關(guān)參數(shù)。
proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } timeout = 10 # 超時(shí)時(shí)間(秒) response = requests.get(url, headers=headers, proxies=proxies, timeout=timeout)
處理動(dòng)態(tài)加載內(nèi)容
某些網(wǎng)站通過(guò) JavaScript 動(dòng)態(tài)加載內(nèi)容,可以使用 selenium
或 playwright
等待元素加載完成。
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)
模擬表單提交
如果需要提交表單數(shù)據(jù),可以使用 requests
發(fā)送 POST 請(qǐng)求。
data = { "username": "test", "password": "123456", } response = requests.post(url, data=data, headers=headers) print(response.text)
通過(guò)以上方法,可以模擬瀏覽器發(fā)送請(qǐng)求并獲取響應(yīng)內(nèi)容。根據(jù)實(shí)際需求選擇合適的工具和技術(shù)方案。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python使用Requests庫(kù)進(jìn)行網(wǎng)絡(luò)接口測(cè)試的實(shí)現(xiàn)步驟
- Python使用Selenium+Requests+OpenCV實(shí)現(xiàn)智能化的Web自動(dòng)化系統(tǒng)
- Python調(diào)用requests庫(kù)實(shí)現(xiàn)自動(dòng)化發(fā)牌功能
- Python requests.post()返回406錯(cuò)誤的常見(jiàn)原因及解決方案
- Python?requests庫(kù)的安裝教程實(shí)例代碼
- Python中Requests庫(kù)的實(shí)現(xiàn)示例
相關(guān)文章
python為Django項(xiàng)目上的每個(gè)應(yīng)用程序創(chuàng)建不同的自定義404頁(yè)面(最佳答案)
這篇文章主要介紹了python為Django項(xiàng)目上的每個(gè)應(yīng)用程序創(chuàng)建不同的自定義404頁(yè)面,本文給出了最佳答案,大家可以跟隨小編一起學(xué)習(xí)下2020-03-03python+unittest+requests實(shí)現(xiàn)接口自動(dòng)化的方法
這篇文章主要介紹了python+unittest+requests實(shí)現(xiàn)接口自動(dòng)化的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11