python請求頭整理,python隨機請求頭

本文目錄一覽:

Python的 request 庫,請求頭是什麼?

就是headers,照抄瀏覽器F12里那一堆就行,如下圖,請求標頭下面所有內容都是。

Python爬蟲雜記 – POST之multipart/form-data請求

原以為requests請求十分強大, 但遇到了模擬multipart/form-data類型的post請求, 才發現requests庫還是有一丟丟的不足。 不過也可能是我理解的不足, 還希望讀者老爺不吝指教! 在此感謝!

enctype屬性:

enctype:規定了form表單在發送到服務器時候編碼方式,它有如下的三個值。

①application/x-www-form-urlencoded:默認的編碼方式。但是在用文本的傳輸和MP3等大型文件的時候,使用這種編碼就顯得 效率低下。

②multipart/form-data:指定傳輸數據為二進制類型,比如圖片、mp3、文件。

③text/plain:純文體的傳輸。空格轉換為 “+” 加號,但不對特殊字符編碼。

值得注意的是:請求頭的Content-Type屬性與其他post請求的不同

總註:上邊這兩種構建參數的方式各有不同, 用起來感覺並不是那麼的靈活,所以感嘆requests有那麼一丟丟丟的不足。值的注意的是,requests.post中files參數接收字典的形式和encode_multipart_formdata中params參數接收字典形式的區別!人生苦短……

python requests get方式怎麼設置請求頭?

Header可以通過Request提供的.add_header()方法進行添加,示例代碼如下:

123456789101112# -*- coding:utf-8 -*-

import urllib2import urlliburl = ”half_url = u’/servlet/av/jd?

ai=782ji=2624743sn=I’#構造get請求req = urllib2.

Request(url+half_url.

encode(‘utf-8’))#添加headerreq.add_header(‘AcceptEncoding’, ‘gzip,deflate’)req.

add_header(‘User-Agent’,’Mozilla/5.0′)response = urllib2.

urlopen(req)

print response.

Requests支持流式上傳,這允許你發送大的數據流或文件而無需先把它們讀入內存。要使用流式上傳,僅需為你的請求體提供一個類文件對象即可。

讀取文件請使用字節的方式,這樣Requests會生成正確的Content-Length。

with open(‘massive-body’, ‘rb’) as f:

requests.post(”, data=f)

分塊傳輸編碼

對於出去和進來的請求,Requests也支持分塊傳輸編碼。要發送一個塊編碼的請求,僅需為你的請求體提供一個生成器

注意生成器輸出應該為bytes

def gen():

yield b’hi’

yield b’there’

requests.post(”, data=gen())

For chunked encoded responses, it’s best to iterate over the data

using Response.iter_content(). In an ideal situation you’ll have set stream=True on the

request, in which case you can iterate chunk-by-chunk by calling iter_content with a chunk

size parameter of None. If you want to set a maximum size of the chunk, you can set a chunk

size parameter to any integer.

Python爬蟲之Header

HTTP “請求頭信息” Request Header 是向服務端提供客戶端的信息,“響應頭信息” Response Header 是服務端向客戶端提供請求文檔信息或服務器的狀態信息,服務端判斷服務端的身份,就是通過 Header 來判斷的,所以爬蟲通過設置 Header 來隱藏自己相當重要。

一個完整的HTTP請求包含以下部分:

請求方法 URL HTTP版本

請求頭信息

請求數據

一個空行,請求的結束行

常見的請求頭:

Accept :客戶端接收的數據類型,如:Accept:text/html

User Agent :客戶端軟件類型

Authorization :認證消息,包括用戶名和口令

Referer :用戶獲取的Web頁面

真實的請求頭信息會更多,下面是豆瓣某短評的真實請求頭:

一個完整的HTTP響應包含以下部分:

狀態行

響應頭

響應數據

常見的狀態行:

更多狀態碼查看: HTTP狀態碼

常見的響應頭:

Server :Web服務器程序的信息

Date :當前服務器的日期和時間

Last Modified :請求文檔最近一次修改的時間

Expires :請求文檔過期時間

Content-length :數據長度(字節)

Content-type :數據MIME類型

WWW-authenticate :用於通知客戶方需要的認證信息,如用戶名,口令等

下面是豆瓣某短評的真實響應頭:

Python使用Requests來請求的時候,如果沒有設置Header,Header是空的,設置Header的方法如下:

python得到客戶端的請求頭

http-server能提供的環境變量是有限的,一般是基於標準的cgi接口實現,這樣就難免會去除一些不常用到的信息。如果想獲取完整頭信息只能自己實現,或者是使用python實現的http-server。如webpy中就可以通過web.ctx.env訪問header信息。

webpy項目中:

class index:

    def GET(self):

        for k in web.ctx.env:

            print k, web.ctx.env[k]

運行結果:

D:\python code.py

HTTP_COOKIE webpy_session_id=33d6e36b5ba97b4b8047508d38aac8b045dc09d2

SERVER_SOFTWARE CherryPy/3.2.0 Server

SCRIPT_NAME

ACTUAL_SERVER_PROTOCOL HTTP/1.1

REQUEST_METHOD GET

PATH_INFO /

SERVER_PROTOCOL HTTP/1.1

QUERY_STRING

HTTP_USER_AGENT Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gec

ko) Chrome/35.0.1916.114 Safari/537.36

HTTP_CONNECTION keep-alive

REMOTE_PORT 1842

SERVER_NAME localhost

REMOTE_ADDR 127.0.0.1

wsgi.url_scheme http

SERVER_PORT 8080

wsgi.input web.wsgiserver.KnownLengthRFile object at 0x013D8E10

HTTP_HOST localhost:8080

wsgi.multithread True

HTTP_CACHE_CONTROL max-age=0

REQUEST_URI /

HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*

;q=0.8

wsgi.version (1, 0)

wsgi.run_once False

wsgi.errors open file ‘stderr’, mode ‘w’ at 0x00BA60D0

wsgi.multiprocess False

HTTP_ACCEPT_LANGUAGE zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,ja;q=0.2

HTTP_ACCEPT_ENCODING gzip,deflate,sdch

127.0.0.1:1842 – – [28/May/2014 15:13:29] “HTTP/1.1 GET /” – 200 OK

如何用Python寫一個http post請求

可以參考如下三種方法:

 

一、application/x-www-form-urlencoded

import urllib

url = “”

body_value = {“package”: “com.tencent.lian”,”version_code”: “66” }

body_value  = urllib.urlencode(body_value)

request = urllib2.Request(url, body_value)

request.add_header(keys, headers[keys])

result = urllib2.urlopen(request ).read()

二、multipart/form-data 

需要利用python的poster模塊,安裝poster:pip install poster 

代碼:

from poster.encode import multipart_encode 

from poster.streaminghttp import register_openers 

url = “”

body_value = {“package”: “com.tencent.lian”,”version_code”: “66” }

register_openers()

datagen, re_headers = multipart_encode(body_value)

request = urllib2.Request(url, datagen, re_headers)

# 如果有請求頭數據,則添加請求頭

request .add_header(keys, headers[keys])

result = urllib2.urlopen(request ).read()

二、application/json

import json

url = “”

body_value = {“package”: “com.tencent.lian”,”version_code”: “66” }

register_openers()

body_value  = json.JSONEncoder().encode(body_value)

request = urllib2.Request(url, body_value)

request .add_header(keys, headers[keys])

result = urllib2.urlopen(request ).read()

原創文章,作者:CURX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140328.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CURX的頭像CURX
上一篇 2024-10-04 00:23
下一篇 2024-10-04 00:23

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論