标签: python-requests

Python requests 库在 Windows 上非常慢

此问题发生在 Windows 10 上(我知道这一点,因为 Mac 操作系统上不存在)。

每当您向端点之一发出如下所示的简单请求时,在 Windows 上速度非常慢,而在 Mac OS 上几乎是即时的。

import requests
requests.get('/user/get/' + str(current_user.id))
Run Code Online (Sandbox Code Playgroud)

在 Windows 上大约需要 3 秒,而在 Mac OS 上几乎是瞬时的。

通过使用一些简单的日志记录,我发现urllib3(这是请求的底层库)在建立新的 http 连接时需要很长时间。这是目前的痛点,我不知道如何解决这个问题。

DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:5004
Run Code Online (Sandbox Code Playgroud)

修复失败1:

我从这个答案中尝试了以下内容,但它不起作用。

import requests

session = requests.Session()
session.trust_env = False

r = session.get('/user/get/' + str(current_user.id))
Run Code Online (Sandbox Code Playgroud)

我也从相同的答案中尝试了以下内容,但它不起作用。

os.environ['NO_PROXY'] = 'localhost'
Run Code Online (Sandbox Code Playgroud)

修复失败2:

我尝试了第二个假设的修复,但它也不起作用。

import requests

proxies = {
  "http": None,
  "https": None,
}

r = requests.get('/user/get/' + str(current_user.id), proxies=proxies)
Run Code Online (Sandbox Code Playgroud)

现在..

这让我没有答案,也没有可用的修复方法。有人知道为什么这是一个问题吗?

python python-requests

1
推荐指数
1
解决办法
1546
查看次数

Python 请求指纹识别?

我正在编写一个 Amazon API,当仅使用 Python 请求而不使用代理时,它会提示输入验证码。当通过 fiddler 路由这个 python 请求流量时,它似乎没有问题地通过。亚马逊是否有可能对 Python 请求进行指纹识别,而 fiddler 由于它是代理而更改了指纹?

我查看了从 fiddler 和 Python 请求发送的标头,它们是相同的。

在 fiddler 上没有设置额外的代理/fiddler 规则/过滤器来创建更改。

需要明确的是,所有提到的代理仅在本地完成,因此不会更改公共 IP 地址。

python captcha fiddler python-requests

1
推荐指数
1
解决办法
4239
查看次数

import-im6.q16:未授权“请求”@ error/constitute.c/WriteImage/1037

我已经在 python 2.7 中安装了 requests 模块,但是在导入它时给了我

import-im6.q16: not authorized `requests' @ error/constitute.c/WriteImage/1037
Run Code Online (Sandbox Code Playgroud)

这是为什么?

python python-2.7 python-requests

1
推荐指数
1
解决办法
4657
查看次数

使用请求将 cURL 命令转换为 Python

我正在尝试将以下 cULR 命令转换为 Python:


curl --location --request POST 'api.datamyne.com/frontend/REST/application' \
--header 'Content-Type: application/json' \
--data-raw '{
  "token": "boKnofR06mzldz5eL00ARwa3B9winzpn",
  "idApp":44
}'

Run Code Online (Sandbox Code Playgroud)

我有以下 Python 代码,但似乎不起作用。知道如何将原始数据包含到请求中吗?

import requests

headers = {
    'Content-Type': 'application/json',
    'token': 'boKnofR06mzldz5eL00ARwa3B9winzpn',
    'idApp': '44'
}

response = requests.get('http://api.datamyne.com/frontend/REST/applications', headers=headers)

print(response.content)
Run Code Online (Sandbox Code Playgroud)

python api curl python-requests

1
推荐指数
1
解决办法
5947
查看次数

是否可以从 HTTP 请求标头获取客户端的 IP 地址?

我想知道是否可以使用Python从http请求头获取客户端的IP地址?我正在做一个天气项目,如果我能显示他自己所在位置的天气信息那就太好了。

python http request-headers python-requests python-requests-html

1
推荐指数
1
解决办法
9216
查看次数

如何在 python 中从网络浏览器控制台运行命令?

我最近一直在尝试在网络浏览器中通过 python 运行命令,就像使用 chrome 开发人员工具一样。

这在 chrome 中很容易做到,但是我该如何在 python 中做到这一点呢?我不知道如何从 python 脚本中复制它。我想要运行的浏览器命令特定于我正在使用的网站,这就是我需要使用命令行的原因。

如何在 python 3 中重新在浏览器命令行中运行命令?抱歉,如果这是一个愚蠢的问题。谢谢!

编辑:我最终使用了硒,但遇到了一些问题。我正在访问的网站( roblox.com )在浏览器控制台中显示我未经授权。 图2 不过,当我登录时,我非常确定我正确实施了身份验证 cookie。由于某种原因,我的一些数据没有加载,例如我的货币计数。

这可能不是问这样的问题的地方,因为该论坛的成员对 roblox 一无所知,但也许这是我的代码中的一个简单问题。

# my code
from selenium import webdriver
import time

driver = webdriver.Chrome('C:\\Users\KDJ\Documents\GameJoiner\chromedriver.exe')
options = webdriver.ChromeOptions()

driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)


URL = 'https://www.roblox.com/games'
driver.get(URL)
driver.add_cookie({'name' : '.ROBLOSECURITY', 'value' : Cookie})



driver.get(URL)
Run Code Online (Sandbox Code Playgroud)

附带说明一下,您可能看不到我定义 Cookie 变量。这是因为我删除了它,因为这个 cookie 允许其他人登录我的帐户。

在此输入图像描述

python python-requests

1
推荐指数
1
解决办法
1万
查看次数

如何解决 python requests SSL 和代理错误?

当发送带有身份验证的请求时,我收到 requests.exceptions.SSLError 错误,您可以在下面看到。

proxies = { 'https' : "http://user:pass@ip:port/" } 

url = "https://httpbin.org/ip"

numberResponse = requests.get(url,proxies=proxies).text

print(numberResponse)
Run Code Online (Sandbox Code Playgroud)

requests.exceptions.SSLError​

Traceback (most recent call last):
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 696, in urlopen       
    self._prepare_proxy(conn)
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connectionpool.py", line 964, in _prepare_proxy
    conn.connect()
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 359, in connect
    conn = self._connect_tls_proxy(hostname, conn)
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 496, in _connect_tls_proxy
    return ssl_wrap_socket(
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\ssl_.py", line 428, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\util\ssl_.py", line 472, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Users\K_Yuk\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 500, in wrap_socket …
Run Code Online (Sandbox Code Playgroud)

python ssl proxy python-requests

1
推荐指数
1
解决办法
1万
查看次数

如何在 requests.get() 中使用主题标签而不是问号发送参数?

我的目标是让人们理解requests.get()我想用作#查询符号而不是默认符号?。

这是一个例子:

import requests

# our base url
url = 'https://www.example.com/search#'

# our query parameters
params = {
    'one_parameter' : 'one_value'
}

# making the request
response = requests.get(url, params = params)

# printing the url requested by requests.get()
print(response.url)
Run Code Online (Sandbox Code Playgroud)

我期待这个输出:

https://www.example.com/search#one_parameter=one_value
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

https://www.example.com/search?one_parameter=one_value
Run Code Online (Sandbox Code Playgroud)

两个问题:

  • 为什么请求会自动删除最初的#?
  • 如何理解我想要使用 a#而不是 a?作为查询分隔符的请求?

更新: 当 url 变得很长时,我想从 LinkedIn 搜索中提取数据,它会切换到 a#而不是?.

网址示例:( https://www.linkedin.com/sales/search/people#companyExcluded=Clarins%3A10116%2CEverlog%3A10473838%2CSisley%2520Paris%3A1055530%2CBMW%2520BAYERN%2520Bordeaux-Bassin%2520by%2520autosphere%2520(M%25C3%25A9rignac%2520-%2520La%2520Teste-de-Buch)%3A10667996%2COrange%3A1110%2CShiseido%3A11223%2Cmercedes%3A11235632%2CA26%2520architectures%3A11380777...以及更多)

是的,确实看起来有些 JavaScript 正在使用片段部分来进行进一步的处理并最终获取数据。

因此我需要模仿浏览器的行为。

python python-3.x python-requests

1
推荐指数
1
解决办法
1116
查看次数

使用 Bytes 对象的 FastApi Post 请求出现 422 错误

我正在编写一个带有字节体的 python post 请求:

with open('srt_file.srt', 'rb') as f:
    data = f.read()

    res = requests.post(url='http://localhost:8000/api/parse/srt',
                        data=data,
                        headers={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)

在服务器部分,我尝试解析正文:

app = FastAPI()
BaseConfig.arbitrary_types_allowed = True


class Data(BaseModel):
    data: bytes

@app.post("/api/parse/{format}", response_model=CaptionJson)
async def parse_input(format: str, data: Data) -> CaptionJson:
    ...
Run Code Online (Sandbox Code Playgroud)

但是,我收到了 422 错误: {"detail":[{"loc":["body"],"msg":"value is not a valid dict","type":"type_error.dict"}]}

那么我的代码哪里出了问题,我应该如何修复它?预先感谢大家的帮助!

python python-requests fastapi

1
推荐指数
1
解决办法
9479
查看次数

Python请求无法获取在浏览器上打开的网站

我一直在尝试使用https://www.dickssportinggoods.com/f/tents-accessories 请求模块访问该网站,但它只是继续处理并且不会停止,而同一网站在浏览器上运行良好。Scrappy 给出了同一网站的超时错误。访问此类网站时有什么需要注意的吗?谢谢

python web-scraping python-requests

1
推荐指数
1
解决办法
5909
查看次数