国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************

這篇具有很好參考價(jià)值的文章主要介紹了Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

我們在使用python爬蟲, 例如使用requests想服務(wù)器發(fā)送請求,模擬上傳圖片的時(shí)候會遇到Reqest Headers 中有一個(gè):Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,? 嘗試這從其它返回的接口中也找不到它,

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,爬蟲

我們也一度懷疑是否是在前端JS中生成的,不要著急! 只是向服務(wù)端上傳一個(gè)照片, API接口沒必要設(shè)計(jì)的這么復(fù)雜把??!哈哈哈,

首先我們先觀察一下請求的URL地址以及攜帶的data數(shù)據(jù):

小伙伴們觀察數(shù)據(jù)的時(shí)候要以自己爬取的目標(biāo)網(wǎng)站為準(zhǔn)哦!

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,爬蟲

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,爬蟲

我們發(fā)現(xiàn)它是攜帶著? thumbnail_icon 和 thumbnail 參數(shù)向 https:// xxxxxxx 的ajax接口發(fā)送了一個(gè)patch 請求, 攜帶的 thumbnail 的值為空, 而thumbnail 的值就是要上傳的圖片了。

這時(shí)候, 我們需要用到, random, string, 以及 requests_toolbelt 模塊中的 MultipartEncoder 這個(gè)類

第一步: pip install requests_toolbelt 模塊

代碼如下:

import requests
import random
import string
from requests

url = 'https:// xxxxxxxxx'

# 定義 fields 用來加密
fields = {
    'thumbnail_icon': '',

     # 注意如果是jpeg 則:image/jpeg
    'thumbnail': ('圖片.png', open('圖片.png', 'rb'), 'image/png'),

}

# 生成 boundary內(nèi)容, 
boundary = '----WebKitFormBoundary' + ''.join(random.sample(string.ascii_letters + string.digits, 16))

m = MultipartEncoder(fields=fields, boundary=boundary)

headers = {
    "Content-Type": m.content_type
}
response = requests.patch(url, headers=headers, data=m)
print(response.status_code)

其中:??? ''.join(random.sample(string.ascii_letters + string.digits, 16))

string.ascii_letters 返回的是 a-zA-Z 的字符串

string.digits 返回的是 0123456789? 字符串

不明覺厲,

string.ascii_letters + string.digits? 返回的就是 a-zA-Z0-9 的字符串啦

然后再使用random.sample() 方法,隨機(jī)從此字符串中獲取 16 個(gè)字符, 返回的則是一個(gè)列表,

使用 ''.join()方法, 轉(zhuǎn)換列表為字符串, 再和 前面的 ----WebKitFormBoundary 做一個(gè)拼接, 就完成了我們的boundary 值了,

然后使用 MultipartEncoder(fields=fields, boundary=boundary) 將我們要上傳的圖片參數(shù),以及生成的boundary傳入此類中, 然后使用返回的 m對象,調(diào)用器 content_type 屬性,就能獲取Content-Type 的值了, 這樣,我們就能成功模擬發(fā)送請求了?。。?/p>

================================================================

還有一種情況是不帶 image 向服務(wù)器發(fā)送 multipart/form-data 的情況。

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,爬蟲

Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************,爬蟲

我們發(fā)現(xiàn)只向服務(wù)器發(fā)送了一個(gè) description_is_active 參數(shù), 值為 True, 沒有攜帶任何的圖片,

那么我們就不能使用MultiparEncoder()類來完成初始化了,

代碼實(shí)現(xiàn)如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-757844.html

# 我們需要將headers 請求頭中的Content-Type 注釋掉, 這個(gè)參數(shù)是由服務(wù)端為我們生成的,加上會報(bào)錯(cuò)

data = {
    "description_is_active": (None, True)
}

headers_data = {
    
    # 一定不要加Content-Type, 不然會報(bào)錯(cuò)
    'Authorzation': xxx,
    'User-Agent': xxx,
}

# 直接調(diào)用requests 發(fā)送請求即可, 攜帶參數(shù)使用files形參
requests.patch(url, headers=headers, files=data)

到了這里,關(guān)于Python爬蟲關(guān)于網(wǎng)站上傳圖片: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary****************的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 關(guān)于前端如何下載后端接口返回content-type為application/octet-stream的文件

    關(guān)于前端如何下載后端接口返回content-type為application/octet-stream的文件

    后端接口定義為直接返回一個(gè)文件,如果帶認(rèn)證信息可以直接通過瀏覽器url下載,但是接口需要傳headers認(rèn)證信息,url上又不支持傳相關(guān)信息 前端正常請求接口,設(shè)置responseType值為blob,這樣取到接口返回的數(shù)據(jù)為Blob類型,之后通過由blob數(shù)據(jù)創(chuàng)建一個(gè)指向類型數(shù)組的URL來完成

    2024年02月03日
    瀏覽(31)
  • python實(shí)現(xiàn)Content-Type:application/octet-stream

    Content-Type:application/octet-stream 這種傳輸用于圖片|文本傳輸: 我也是在操作河馬云手機(jī)中,往云機(jī)傳輸圖片和文本txt遇到的。 “”\\\"==============================================================\\\"\\\"\\\" 接下來python實(shí)現(xiàn)下: 首先要先安裝:requests-toolbelt 圖片: 文本:

    2024年02月16日
    瀏覽(19)
  • 【Python Flask/postman:request中post的header:Content-type=“text/plain”報(bào)錯(cuò)及解決方法】

    【Python Flask/postman:request中post的header:Content-type=“text/plain”報(bào)錯(cuò)及解決方法】

    python Flask構(gòu)建restful API接口服務(wù),通過postman進(jìn)行接口服務(wù)驗(yàn)證測試 提示:這里描述項(xiàng)目中遇到的問題: 驗(yàn)證接口調(diào)用text/plain時(shí)出現(xiàn)報(bào)錯(cuò) 源代碼(錯(cuò)誤): 報(bào)錯(cuò)1: TypeError: ‘bytes’ object is not callable 報(bào)錯(cuò)1原因: 類中函數(shù)名或者變量名重用(即變量名和函數(shù)名有重復(fù)) 根據(jù)

    2023年04月08日
    瀏覽(28)
  • Content-Type 值有哪些?

    Content-Type 值有哪些?

    1、application/x-www-form-urlencoded 最常見 POST 提交數(shù)據(jù)的方式。 瀏覽器的原生 form 表單,如果不設(shè)置 enctype 屬性,那么最終就會以 application/x-www-form-urlencoded 方式提交數(shù)據(jù)。 Cntent-Type 被指定為 application/x-www-form-urlencoded。 其次,提交的數(shù)據(jù)按照【name=小草莓other=hahah】的方式進(jìn)行編

    2024年02月06日
    瀏覽(19)
  • 前端篇-Content-Type 詳解

    前端篇-Content-Type 詳解

    Content-Type(MediaType),即是Internet Media Type,互聯(lián)網(wǎng)媒體類型,也叫做MIME類型。在互聯(lián)網(wǎng)中有成百上千中不同的數(shù)據(jù)類型,HTTP在傳輸數(shù)據(jù)對象時(shí)會為他們打上稱為MIME的數(shù)據(jù)格式標(biāo)簽,用于區(qū)分?jǐn)?shù)據(jù)類型。最初MIME是用于電子郵件系統(tǒng)的,后來HTTP也采用了這一方案。 在HTTP協(xié)議

    2024年04月27日
    瀏覽(20)
  • 詳解Http的Content-Type

    詳解Http的Content-Type

    目錄 1.概述 2.常用類型 2.1.application/x-www-form-urllencoded 2.2.application/json 3.Spring MVC支持的編碼 3.1.實(shí)驗(yàn) 3.2.適配器 3.3.自定義適配器 HTTP(HyperText Transfer Protocol),超文本傳輸協(xié)議。超文本(Hypertext)是一種結(jié)構(gòu)化的文本,其中包含了超鏈接(Hyperlink)的能力,通過超鏈接可以在不

    2024年02月09日
    瀏覽(20)
  • http中的Content-Type類型

    http中的Content-Type類型

    最近在做web端下載的時(shí)候需要給前端返回一個(gè)二進(jìn)制的流,需要在請求頭中設(shè)置一個(gè) 那么http中的Content-Type有具體有哪些呢?他們具體的使用場景又是怎樣的呢? MediaType,即是Internet Media Type,互聯(lián)網(wǎng)媒體類型;也叫做MIME類型,在Http協(xié)議消息頭中,使用Content-Type來表示具體請

    2024年02月06日
    瀏覽(49)
  • Http請求中的Content-Type

    Http請求中的Content-Type

    前陣子公司接回了一個(gè)舊的項(xiàng)目,剛開始的時(shí)候沒有注意看前端設(shè)置的content-type,然后與后端同事進(jìn)行接口聯(lián)調(diào)的時(shí)候就,有時(shí)候發(fā)現(xiàn)數(shù)據(jù)就是對不上,后面看了一下代碼中的axios請求相關(guān)設(shè)置,才發(fā)現(xiàn)是自己走坑了!主要是在請求攔截和響應(yīng)攔截這塊的處理,請求攔截這塊

    2024年02月12日
    瀏覽(24)
  • 前端知識~Content-Type和Accept

    前端知識~Content-Type和Accept

    Content-Type和Accept是兩個(gè)HTTP標(biāo)頭(HTTP headers),用于在HTTP請求和響應(yīng)之間傳遞有關(guān)請求的數(shù)據(jù)類型和響應(yīng)的首選內(nèi)容類型的信息。這兩個(gè)標(biāo)頭在HTTP通信中起著關(guān)鍵的作用。 Content-Type: Content-Type 是HTTP請求頭或響應(yīng)頭的一部分,用于指示HTTP消息主體(請求或響應(yīng)體)的媒體類

    2024年02月10日
    瀏覽(24)
  • Http Content-type 對照表

    文件擴(kuò)展名 Content-Type(Mime-Type) 文件擴(kuò)展名 Content-Type(Mime-Type) .*( 二進(jìn)制流,不知道下載文件類型) application/octet-stream .tif image/tiff .001 application/x-001 .301 application/x-301 .323 text/h323 .906 application/x-906 .907 drawing/907 .a11 application/x-a11 .acp audio/x-mei-aac .ai application/postscript .aif audio/aiff

    2024年02月09日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包