Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用请求库上载图片时出错_Python_Python 3.x_Python Requests - Fatal编程技术网

Python 使用请求库上载图片时出错

Python 使用请求库上载图片时出错,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我正试图在我的代码中实现。在Burp Suite的帮助下,我成功地发现以下请求是用于发送图像的请求: 我试图用以下代码模拟此请求: import requests from requests_toolbelt import MultipartEncoder files={ 'file':("blob",open("image_path", 'rb'),"image/jpeg") } #(<filename>, <file object>, <co

我正试图在我的代码中实现。在Burp Suite的帮助下,我成功地发现以下请求是用于发送图像的请求:

我试图用以下代码模拟此请求:

import requests
from requests_toolbelt import MultipartEncoder
files={
    'file':("blob",open("image_path", 'rb'),"image/jpeg")
    }

#(<filename>, <file object>, <content type>, <per-part headers>)
burp0_url = "https://translate.yandex.net:443/ocr/v1.1/recognize?srv=tr-image&sid=9b58493f.5c781bd4.7215c0a0&lang=en%2Cru"


m = MultipartEncoder(files, boundary='-----------------------------7652580604126525371226493196')

burp0_headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0", "Accept": "*/*", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "https://translate.yandex.com/", "Content-Type": "multipart/form-data; boundary=-----------------------------7652580604126525371226493196", "Origin": "https://translate.yandex.com", "DNT": "1", "Connection": "close"}

print(requests.post(burp0_url, headers=burp0_headers, files=m.to_string()).text)
有人知道如何解决这个问题吗


非常感谢

您正在将
MultipartEncoder.to_string()
结果传递给
文件
参数。您现在请求将多部分编码器的结果编码到多部分组件。那太多了一次

您不需要在此处复制每个字节,只需发布文件,还可以设置用户代理、引用者和来源:

files = {
    'file': ("blob", open("image_path", 'rb'), "image/jpeg")
}

url = "https://translate.yandex.net:443/ocr/v1.1/recognize?srv=tr-image&sid=9b58493f.5c781bd4.7215c0a0&lang=en%2Cru"
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0", 
    "Referer": "https://translate.yandex.com/",
    "Origin": "https://translate.yandex.com",
}

response = requests.post(url, headers=headers, files=files)
print(response.status)
print(response.json())
连接头最好留给请求使用,它可以控制连接何时保持活动状态。Accept*头告诉服务器客户端可以处理什么,并且
请求也会自动设置这些请求

我得到一个200 OK的回复,代码是:

200
{'data': {'blocks': []}, 'status': 'success'}

但是,如果不设置其他头(删除
headers=headers
参数),请求也会起作用,因此Yandex似乎不会在此处筛选机器人。

您正在将
MultipartEncoder.to_string()
结果传递给
files
参数。您现在请求将多部分编码器的结果编码到多部分组件。那太多了一次

您不需要在此处复制每个字节,只需发布文件,还可以设置用户代理、引用者和来源:

files = {
    'file': ("blob", open("image_path", 'rb'), "image/jpeg")
}

url = "https://translate.yandex.net:443/ocr/v1.1/recognize?srv=tr-image&sid=9b58493f.5c781bd4.7215c0a0&lang=en%2Cru"
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0", 
    "Referer": "https://translate.yandex.com/",
    "Origin": "https://translate.yandex.com",
}

response = requests.post(url, headers=headers, files=files)
print(response.status)
print(response.json())
连接头最好留给请求使用,它可以控制连接何时保持活动状态。Accept*头告诉服务器客户端可以处理什么,并且
请求也会自动设置这些请求

我得到一个200 OK的回复,代码是:

200
{'data': {'blocks': []}, 'status': 'success'}

但是,如果不设置其他头(删除
headers=headers
参数),请求也会起作用,因此Yandex似乎不会在此处筛选机器人。

我甚至不会在此处为多部分上载复制边界。我当然也不会复制每一个标题。@MartijnPieters非常感谢您的快速回复。那么你将如何复制它呢?我甚至不会在这里复制多部分上传的边界。我当然也不会复制每一个标题。@MartijnPieters非常感谢您的快速回复。那么你将如何复制它呢?