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

python通過http上傳文件思路詳解

 更新時(shí)間:2021年07月05日 16:42:03   作者:夢(mèng)因you而美  
這篇文章主要介紹了python通過http上傳文件,在post請(qǐng)求中,用files參數(shù)來接受文件對(duì)象相關(guān)的參數(shù),通過data/json參數(shù)接受post請(qǐng)求體的其他參數(shù)

這里主要是解決multipart/form-data這種格式的文件上傳,基本現(xiàn)在http協(xié)議上傳文件基本上都是通過這種格式上傳

1 思路

一般情況下,如果我們往一個(gè)地址上傳文件,則必須要登陸,登陸成功后,拿到cookies,然后在上傳文件的請(qǐng)求攜帶這個(gè)cookies。

然后我們就需要通過瀏覽器在網(wǎng)站上傳文件,這個(gè)時(shí)候我們需要打開瀏覽器的開發(fā)者工具或者fiddler,然后按照抓到包組裝我們的上傳文件的post請(qǐng)求

大家把握一個(gè)原則就是:在post請(qǐng)求中,用files參數(shù)來接受文件對(duì)象相關(guān)的參數(shù),通過data/json參數(shù)接受post請(qǐng)求體的其他參數(shù)即可。

2 實(shí)現(xiàn)

2.1 登陸網(wǎng)站

使用requests.session()對(duì)象登陸網(wǎng)站,這里主要為了方便,下次直接用這個(gè)對(duì)象發(fā)送post上傳文件的請(qǐng)求即可,不需要我們?cè)谡?qǐng)求體中添加cookies

查找登錄的URL

查找請(qǐng)求頭

查找登錄參數(shù)

代碼如下: 

import requests
 
s = requests.session()
 
res1 = s.post(
    url="http://127.0.0.1:5000/login",
    headers={
        'Host': '127.0.0.1:5000',
        'Connection': 'keep-alive',
        'Content-Length': '28',
        'Cache-Control': 'max-age=0',
        'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
        'sec-ch-ua-mobile': '?0',
        'Upgrade-Insecure-Requests': '1',
        'Origin': 'http://127.0.0.1:5000',
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-User': '?1',
        'Sec-Fetch-Dest': 'document',
        'Referer': 'http://127.0.0.1:5000/login',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    },
    data={
        "account": "admin",
        "password": "admin"
    }
)

2.2 手動(dòng)上傳文件,分析http請(qǐng)求的參數(shù)

由于谷歌瀏覽器無法查看上傳文件時(shí)http請(qǐng)求的參數(shù),故使用fiddler來進(jìn)行抓包

抓包情況如下:

說明:

上圖中第一個(gè)紅框中參數(shù)后面全是亂碼,這里就是我們上傳的文件二進(jìn)制格式的表現(xiàn),這里的數(shù)據(jù)就是通過files參數(shù)接收 

第二個(gè)紅框中name的值就是k,比如cid就是k值,下一行的值 7 就是v,這里的參數(shù)就是要通過data參數(shù)接收

上面是http請(qǐng)求的raw格式,我們一般會(huì)看webForms格式的http請(qǐng)求

 分

析完成后,可以看下代碼:

res2 = s.post(
    url="http://127.0.0.1:5000/upload",
    headers={
        'Host': '127.0.0.1:5000',
        'Connection': 'keep-alive',
        'Content-Length': '28',
        'Cache-Control': 'max-age=0',
        'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
        'sec-ch-ua-mobile': '?0',
        'Upgrade-Insecure-Requests': '1',
        'Origin': 'http://127.0.0.1:5000',
        # 'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-User': '?1',
        'Sec-Fetch-Dest': 'document',
        'Referer': 'http://127.0.0.1:5000/login',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9'
    },
    files={
        "filename_list": open("./test", "rb"),
        "Content-Type": "text/plain",
        "Content-Disposition": "form-data",
        "filename": "test"
    },
 
    data={
        "cid": "7"
    }
)

3 三個(gè)關(guān)鍵點(diǎn)

3.1 data參數(shù)

注意看k值和抓包中的對(duì)比

3.2 files參數(shù)

這里很關(guān)鍵,這里就是我們上傳的文件對(duì)象了。filename_list 這個(gè)參數(shù)就代表文件文件對(duì)象,filename 這個(gè)值一般就是上傳后的文件的名稱(可以不寫)

3.3 content-type參數(shù)

如果我們通過form-data的方式上傳文件,我們組裝post請(qǐng)求的時(shí)候,headers這個(gè)參數(shù)中一定不能要包括這個(gè)值,由requests庫幫添加這個(gè)元素

如果我們自作聰明,會(huì)導(dǎo)致上傳失敗的,這里非常重要?。。?/strong>

大家可以看到,我在代碼中沒有傳遞content-type這個(gè)參數(shù),但是抓包是有這個(gè)參數(shù)的,所以這個(gè)參數(shù)我們一定不能加

 實(shí)際抓包有這個(gè)參數(shù)

實(shí)際上傳抓包驗(yàn)證即可,和瀏覽器上傳略有不同,但是不影響上傳 

到此這篇關(guān)于python通過http上傳文件的文章就介紹到這了,更多相關(guān)python上傳文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用pytorch動(dòng)手實(shí)現(xiàn)LSTM模塊

    Python使用pytorch動(dòng)手實(shí)現(xiàn)LSTM模塊

    這篇文章主要介紹了Python使用pytorch動(dòng)手實(shí)現(xiàn)LSTM模塊,LSTM是RNN中一個(gè)較為流行的網(wǎng)絡(luò)模塊。主要包括輸入,輸入門,輸出門,遺忘門,激活函數(shù),全連接層(Cell)和輸出
    2022-07-07
  • python查詢mysql,返回json的實(shí)例

    python查詢mysql,返回json的實(shí)例

    下面小編就為大家分享一篇python查詢mysql,返回json的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 使用matplotlib.pyplot繪制多個(gè)圖片和圖表實(shí)現(xiàn)方式

    使用matplotlib.pyplot繪制多個(gè)圖片和圖表實(shí)現(xiàn)方式

    這篇文章主要介紹了使用matplotlib.pyplot繪制多個(gè)圖片和圖表的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python使用openpyxl讀取合并單元格的值

    python使用openpyxl讀取合并單元格的值

    本文主要介紹了python使用openpyxl讀取合并單元格的值,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 淺談Python大神都是這樣處理XML文件的

    淺談Python大神都是這樣處理XML文件的

    這篇文章主要介紹了詳解Python大神都是這樣處理XML文件的,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • 關(guān)于yolov5的一些簡單說明(txt文件、訓(xùn)練結(jié)果分析等)

    關(guān)于yolov5的一些簡單說明(txt文件、訓(xùn)練結(jié)果分析等)

    使用YOLOV5訓(xùn)練數(shù)據(jù)之后我們需要一些評(píng)判標(biāo)準(zhǔn)來告訴我們所訓(xùn)練的效果究竟如何,下面這篇文章主要給大家介紹了關(guān)于yolov5的一些簡單說明,主要是txt文件、訓(xùn)練結(jié)果分析等的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python生成隨機(jī)密碼的方法

    Python生成隨機(jī)密碼的方法

    這篇文章主要為大家詳細(xì)介紹了Python生成隨機(jī)密碼的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python庫Cerberus數(shù)據(jù)驗(yàn)證如何保證系統(tǒng)安全性正確性實(shí)例分析

    Python庫Cerberus數(shù)據(jù)驗(yàn)證如何保證系統(tǒng)安全性正確性實(shí)例分析

    本文帶大家探索?Cerberus?庫,看看它是如何幫助我們?cè)陂_發(fā)過程中保障數(shù)據(jù)的安全性和完整性的,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python中的struct.unpack示例詳解

    Python中的struct.unpack示例詳解

    在Python中,struct.unpack是一個(gè)函數(shù),用于將字節(jié)串轉(zhuǎn)換為元組,這個(gè)函數(shù)在處理二進(jìn)制數(shù)據(jù)時(shí)非常有用,這篇文章主要介紹了Python中的struct.unpack示例詳解,需要的朋友可以參考下
    2023-12-12
  • Python如何獲取響應(yīng)體response body

    Python如何獲取響應(yīng)體response body

    在Python中,我們可以使用多個(gè)庫來發(fā)送HTTP請(qǐng)求并獲取響應(yīng)體(response body),其中requests就是最常用的庫之一,下面我們就來看看如何利用requests發(fā)送HTTP GET請(qǐng)求,并獲取響應(yīng)體吧
    2024-11-11

最新評(píng)論

定陶县| 法库县| 杨浦区| 健康| 浮梁县| 卢湾区| 榆中县| 黄平县| 清流县| 明光市| 都安| 开远市| 南澳县| 息烽县| 阜新市| 依安县| 小金县| 宁城县| 宝丰县| 永仁县| 裕民县| 丰都县| 荥经县| 昂仁县| 黄浦区| 陕西省| 磐安县| 大丰市| 南江县| 酉阳| 竹溪县| 延寿县| 包头市| 青海省| 广灵县| 和田县| 张家川| 安乡县| 清苑县| 日照市| 广安市|