欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用requests庫提交multipart/form-data請求的方法詳解

 更新時間:2023年01月17日 11:26:22   作者:山山而川'  
multipart/form-data的基礎是post請求,即基于post請求來實現(xiàn)的 ,下面這篇文章主要給大家介紹了關于python使用requests庫提交multipart/form-data請求的相關資料,需要的朋友可以參考下

前言

今天滲透測試的時候,發(fā)現(xiàn)一個接口可以越權遍歷出用戶的敏感信息,然后想編寫python腳本將所有信息都給dump下來。當我查看請求數(shù)據(jù)的時候,是如下這樣的。不同于之前的請求數(shù)據(jù)是json可以直接使用data然后封裝成字典就可以進行發(fā)送請求

這里的content-type是 multipart/form-data

multipart/form-data

Multipart/form-data其實就是上傳文件的一種方式。我對它的翻譯是 “多部分表單數(shù)據(jù)” ;在生活中其實經常用到,比如說,在寫郵件時,向郵件后添加附件,附件通常使用表單添加,也就是用multipart/form-data格式上傳到服務器。

http協(xié)議本身的原始方法其實并不支持multipart/form-data請求,它是由post方法來組合實現(xiàn)的

  • multipart/form-data與post方法的不同之處(請求頭,請求體)
  • multipart/form-data的請求頭必須包含一個特殊的頭信息:Content-Type,且其值也必須規(guī)定為multipart/form-data,同時還需要規(guī)定一個內容分割符用于分割請求體中的多個post的內容,如文件內容和文本內容自然需要分割開來,不然接收方就無法正常解析和還原這個文件了。

multipart/form-data的請求體也是一個字符串,不過和post的請求體不同的是它的構造方式,post是簡單的name=value值連接,而multipart/form-data則是添加了分隔符等內容的構造體,格式如下:

------WebKitFormBoundaryA0Srut8TBztAofvx
Content-Disposition: form-data; name="grant_type"
 
password
------WebKitFormBoundaryA0Srut8TBztAofvx

其中第一行是自定義的分割符,需要與請求頭中規(guī)定的分割符相同。

其實根據(jù)前言中的例子,可以很容易看出,這個請求體是多個類似的部分組成的:每一個部分都是以–加分隔符開始的,然后是該部分內容的描述信息,然后一個回車,然后是描述信息的具體內容;如果傳送的內容是一個文件的話,那么還會包含文件名信息,以及文件內容的類型。最后會以–分割符–結尾,表示請求體結束。

Python 發(fā)送 multipart/form-data

如下,我們要模擬post如下的數(shù)據(jù)包,那我們如何發(fā)送post的數(shù)據(jù)攜帶以下紅色框中的參數(shù)了? 

1. 重要代碼如下

data = {"id":(None,'899')}
requests.post(xx,files=data)

2. headers中的Content-Type需要注釋掉,發(fā)送請求的時候會被自動加上,否則會報錯

編寫的python requests請求腳本如下

運行然后使用proxychains抓取流量如下,成功模擬的請求發(fā)送

再次提醒:Content-Type需要注釋掉!很重要!!1

補充知識:multipart/form-data 參數(shù)轉碼

比如請求參數(shù)是:

--e0ed233c-3202-47c6-9c96-f9181e308
Content-Disposition: form-data; name="id"
Content-Transfer-Encoding: binary
Content-Type: application/json; charset=UTF-8
Content-Length: 13

234545878
--e0ed233c-3202-47c6-9c96-f9181e308
Content-Disposition: form-data; name="type"
Content-Transfer-Encoding: binary
Content-Type: application/json; charset=UTF-8
Content-Length: 1

1
--e0ed233c-3202-47c6-9c96-f9181e308--

也就是說,有2個 key -> id 和 type

fields={
        "id": '234545878',
        "type": '1'
    }

直接這樣發(fā)請求,會失敗。??

encode一下就能發(fā)請求了。??

from requests_toolbelt.multipart.encoder import MultipartEncoder

multipart_data = MultipartEncoder(
    fields={
        "id": '1653302392217',
        "read_duration_list": read_duration_list,
        "now": now,
        "type": '1'
    }
)
header['Content-Type'] = multipart_data.content_type
header['accept'] = 'application/json'

總結

到此這篇關于python使用requests庫提交multipart/form-data請求的文章就介紹到這了,更多相關python提交multipart/form-data請求內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python3使用turtle繪制超立方體圖形示例

    Python3使用turtle繪制超立方體圖形示例

    這篇文章主要介紹了Python3使用turtle繪制超立方體圖形,結合實例形式分析了Python使用海龜繪圖模塊turtle進行復雜圖形繪制的相關原理與操作技巧,需要的朋友可以參考下
    2018-06-06
  • 把JSON數(shù)據(jù)格式轉換為Python的類對象方法詳解(兩種方法)

    把JSON數(shù)據(jù)格式轉換為Python的類對象方法詳解(兩種方法)

    本文通過兩種方法給大家介紹了把JSON數(shù)據(jù)格式轉換為Python的類對象,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-06-06
  • 完美解決pycharm 不顯示代碼提示問題

    完美解決pycharm 不顯示代碼提示問題

    這篇文章主要介紹了完美解決pycharm 不顯示代碼提示問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python使用redis模塊來跟redis實現(xiàn)交互

    python使用redis模塊來跟redis實現(xiàn)交互

    這篇文章主要介紹了python使用redis模塊來跟redis實現(xiàn)交互,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • python中如何調用ansys

    python中如何調用ansys

    這篇文章主要介紹了python中如何調用ansys問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python中實現(xiàn)單例模式的n種方式和原理

    Python中實現(xiàn)單例模式的n種方式和原理

    這篇文章主要介紹了Python中實現(xiàn)單例模式的n種方式和原理,需要的朋友可以參考下
    2018-11-11
  • python使用pika庫調用rabbitmq參數(shù)使用詳情

    python使用pika庫調用rabbitmq參數(shù)使用詳情

    這篇文章主要介紹了python使用pika庫調用rabbitmq參數(shù)使用詳情,文章通過展開文章主題分享了三種方式,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • Django解決CORS跨域問題的方案

    Django解決CORS跨域問題的方案

    Cross-Origin Resource Sharing(CORS) 跨域問題,在前后端后離項目,selenium , playweight 自動化測試代碼中經常遇到,本文給大家介紹了Django解決CORS跨域問題的方案,文中有詳細的代碼講解,需要的朋友可以參考下
    2024-03-03
  • python 生成器需注意的小問題

    python 生成器需注意的小問題

    這篇文章主要介紹了python 生成器需注意的小問題,幫助大家更好的理解和學習python 生成器,感興趣的朋友可以了解下
    2020-09-09
  • 用pandas劃分數(shù)據(jù)集實現(xiàn)訓練集和測試集

    用pandas劃分數(shù)據(jù)集實現(xiàn)訓練集和測試集

    這篇文章主要介紹了用pandas劃分數(shù)據(jù)集實現(xiàn)訓練集和測試集,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07

最新評論