Ben python 3 basit bir web kazıyıcı üzerinde çalışıyorum ama bir get veya bir posta isteği göndermek zaman, yanıt 403 olduğunu. Python 2 olsa iyi çalışıyor. Her iki sürümde de istek kütüphanelerinin aynı sürümünü kullanıyorum. Ben de denedim Verify=False/True
ama her iki sürümdeki fark kalır.
istekler = 2.22.0
sertifika = 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
@Blhsing tarafından düzenle:
Aşağıdaki liste, hangi Python sürümlerinin çalıştığını ve yorumlara göre hangi sürümlerin başarısız olduğunu izler. Şimdiye kadar başarılar ve başarısızlıklar, platformlardaki her belirli Python sürümü için tutarlı olmuştur.
Sorunun bu bölümünü, sonuçları üretmek için kullanılan belirli Python sürümleriyle birlikte kendi sonuçlarınızla düzenlemekten çekinmeyin.
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)
Repl.it hakkında demo: Python 2.7.16 ve Python 3.7.4
ssl.OPENSSL_VERSION
) nedeniyle . Repro etmek için tüm bu başlıklara ihtiyacınız yok, sadece düz bir eski get (url) bunu yapacak.