Tôi đang làm việc trên một trình quét web đơn giản trong python 3 nhưng khi tôi gửi một yêu cầu nhận hoặc một bài đăng, phản hồi là 403. Trong python 2 hoạt động tốt mặc dù. Tôi đang sử dụng cùng một phiên bản thư viện yêu cầu trong cả hai phiên bản. Tôi cũng đã thử với Verify=False/True
nhưng sự khác biệt trong cả hai phiên bản vẫn còn.
yêu cầu = 2,22,0
certifi = 2019.9.11
from requests import get
url = 'https://www.gamestop.com/'
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0',
'DNT': '1',
'Upgrade-Insecure-Requests': '1',
'Connection': 'keep-alive',
'Host': 'www.gamestop.com'
}
res = get(url, headers=header, verify=False).status_code
print(res)
# 403 when using python 3.7.4
# 200 when using python 2.7.16
Chỉnh sửa bởi @blhsing:
Danh sách dưới đây theo dõi phiên bản Python cụ thể nào hoạt động và phiên bản nào bị lỗi theo các bình luận. Cho đến nay, thành công và thất bại đã được thống nhất cho từng phiên bản Python cụ thể trên các nền tảng.
Vui lòng chỉnh sửa phần câu hỏi này với kết quả của riêng bạn cùng với các phiên bản Python cụ thể được sử dụng để tạo kết quả.
2.7.14 works (blhsing)
2.7.16 works (repl.it)
3.6.5 works (blhsing)
3.6.8 fails (Reinderien and blhsing)
3.7.3 works (wim and blhsing)
3.7.4 fails (repl.it and blhsing)
3.8.0 fails (OP)
Bản trình diễn trên repl.it: Python 2.7.16 và Python 3.7.4
ssl.OPENSSL_VERSION
) khác nhau . Bạn không cần tất cả các tiêu đề đó để repro, chỉ cần một get (url) cũ đơn giản sẽ làm điều đó.