最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

multipart/form-data

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

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

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

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

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

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

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

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

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

1. 重要代碼如下

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

2. headers中的Content-Type需要注釋掉,發(fā)送請求的時(shí)候會(huì)被自動(dòng)加上,否則會(huì)報(bào)錯(cuò)

編寫的python requests請求腳本如下

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

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

補(bǔ)充知識(shí):multipart/form-data 參數(shù)轉(zhuǎn)碼

比如請求參數(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個(gè) key -> id 和 type

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

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

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'

總結(jié)

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

相關(guān)文章

  • 使用python向MongoDB插入時(shí)間字段的操作

    使用python向MongoDB插入時(shí)間字段的操作

    這篇文章主要介紹了使用python向MongoDB插入時(shí)間字段的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作

    這篇文章主要介紹了torch.utils.data.DataLoader與迭代器轉(zhuǎn)換操作,文章內(nèi)容接受非常詳細(xì),對正在學(xué)習(xí)或工作的你有一定的幫助,需要的朋友可以參考一下
    2022-02-02
  • Python操作Excel神器openpyxl使用教程(超詳細(xì)!)

    Python操作Excel神器openpyxl使用教程(超詳細(xì)!)

    openpyxl庫是一個(gè)很好處理xlsx的python庫,下面這篇文章主要給大家介紹了關(guān)于Python辦公自動(dòng)化openpyxl使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Python+Tkinter實(shí)現(xiàn)經(jīng)典井字棋小游戲

    Python+Tkinter實(shí)現(xiàn)經(jīng)典井字棋小游戲

    Tkinter是內(nèi)置到Python安裝包中的,只要安裝好Python之后就能import?Tkinter,而且IDLE也是用Tkinter編寫而成的。本文將用Tkinter編寫經(jīng)典的井字棋小游戲,需要的可以參考一下
    2022-03-03
  • Python中常見的反爬機(jī)制及其破解方法總結(jié)

    Python中常見的反爬機(jī)制及其破解方法總結(jié)

    今天給大家?guī)淼奈恼率顷P(guān)于Python的相關(guān)知識(shí),文章圍繞著Python中常見的反爬機(jī)制及其破解方法展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Python 協(xié)程與 JavaScript 協(xié)程的對比

    Python 協(xié)程與 JavaScript 協(xié)程的對比

    當(dāng)漸漸對 JavaScript 了解后,一查發(fā)現(xiàn) Python 和 JavaScript 的協(xié)程發(fā)展史簡直就是一毛一樣!接下來小編就大致做下橫向?qū)Ρ群涂偨Y(jié),便于對這兩個(gè)語言有興趣的新人理解和吸收。
    2021-09-09
  • Python的Django框架中if標(biāo)簽的相關(guān)使用

    Python的Django框架中if標(biāo)簽的相關(guān)使用

    這篇文章主要介紹了Python的Django框架中if標(biāo)簽的相關(guān)使用,是Django框架使用中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • Python:slice與indices的用法

    Python:slice與indices的用法

    今天小編就為大家分享一篇Python:slice與indices的用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • celery實(shí)現(xiàn)動(dòng)態(tài)設(shè)置定時(shí)任務(wù)

    celery實(shí)現(xiàn)動(dòng)態(tài)設(shè)置定時(shí)任務(wù)

    這篇文章主要為大家詳細(xì)介紹了celery實(shí)現(xiàn)動(dòng)態(tài)設(shè)置定時(shí)任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python 中省略號(hào)對象的使用

    Python 中省略號(hào)對象的使用

    作為一名經(jīng)驗(yàn)豐富的 Python 開發(fā)人員,您可能遇到過 Python 中的三個(gè)點(diǎn)…省略號(hào)對象, 如果您嘗試在 Python 解釋器中打印此內(nèi)容,它將顯示一個(gè)省略號(hào),本篇文章將介紹 Python 中省略號(hào)對象的使用,感興趣的朋友跟隨小編一起看看吧
    2023-10-10

最新評論

定陶县| 田阳县| 南靖县| 疏勒县| 和田市| 湟源县| 乌拉特中旗| 墨竹工卡县| 阳谷县| 本溪| 卢龙县| 乐平市| 嵩明县| 靖远县| 固镇县| 封丘县| 梓潼县| 漳平市| 磐安县| 沙河市| 广汉市| 萍乡市| 新疆| 类乌齐县| 北辰区| 东丽区| 平昌县| 监利县| 拉孜县| 淮阳县| 玛多县| 牡丹江市| 曲水县| 观塘区| 通榆县| 临湘市| 英德市| 海原县| 宁夏| 丹凤县| 淳安县|