Saya sedang mengerjakan scraper web sederhana dengan python 3 tetapi ketika saya mengirim get atau permintaan posting, jawabannya adalah 403. Namun, dalam python 2 berfungsi dengan baik. Saya menggunakan versi yang sama dari perpustakaan permintaan di kedua versi. Saya juga sudah mencoba Verify=False/True
tetapi perbedaan di kedua versi tetap.
permintaan = 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
Edit oleh @blhsing:
Daftar di bawah ini melacak versi Python spesifik mana yang bekerja dan versi mana yang gagal sesuai dengan komentar. Sejauh ini keberhasilan dan kegagalan telah konsisten untuk setiap versi Python spesifik di seluruh platform.
Jangan ragu untuk mengedit bagian pertanyaan ini dengan hasil Anda sendiri bersama dengan versi Python spesifik yang digunakan untuk menghasilkan hasil.
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)
Demo di repl.it: Python 2.7.16 dan Python 3.7.4
ssl.OPENSSL_VERSION
). Anda tidak perlu semua tajuk itu untuk ditegur, hanya mendapatkan (url) lama yang biasa akan melakukannya.