yifeikong / curl_cffi

Python binding for curl-impersonate via cffi. A http client that can impersonate browser tls/ja3/http2 fingerprints.
https://curl-cffi.readthedocs.io/
MIT License
1.63k stars 208 forks source link

[BUG]不会自动进行url编码 #333

Open ANewPassword opened 5 days ago

ANewPassword commented 5 days ago

Describe the bug curl_cffi在使用requests.get()时都不会将url中的特殊字符编码,Session().get()也一样,但requests库会自动进行编码。

To Reproduce

from curl_cffi.requests import get
from requests import get as request_get

proxy = {"http": "http://127.0.0.1:10809", "https": "http://127.0.0.1:10809"}
url = 'https://yande.re/post.json?limit=1&tags=id:<1000&page=0'

res1 = get(url, proxies = proxy)
print('curl_cffi.get:', res1.status_code, res1.content)

res2 = request_get(url, proxies = proxy)
print('requests.get:', res2.status_code, res2.content)

url = 'https://yande.re/post.json?limit=1&tags=id%3A%3C1000&page=0'

res1 = get(url, proxies = proxy)
print('curl_cffi.get(after urlencode):', res1.status_code, res1.content)

执行结果类似于:

curl_cffi.get: 400 b''
requests.get: 200 b'(ignore response content…)'
curl_cffi.get(after urlencode): 200 b'(ignore response content…)'

Expected behavior 自动进行urlencode。

Versions

yifeikong commented 5 days ago

确实有这个不同,等我看下 requests 是咋弄的,也欢迎你 PR。