Я працюю над простим веб-скребком у python 3, але коли я надсилаю заявку на отримання або повідомлення, відповідь - 403. Хоча в python 2 добре працює. Я використовую однакову версію бібліотек запитів в обох версіях. Я також спробував, Verify=False/True
але різниця в обох версіях залишається.
запити = 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
Редагувати @blhsing:
У наведеному нижче списку відстежується, які конкретні версії Python працюють, а які - відмовляються відповідно до коментарів. Досі успіхи та невдачі були послідовними для кожної конкретної версії Python на всіх платформах.
Не соромтесь редагувати цей розділ питання своїми власними результатами разом із конкретними версіями Python, які використовуються для отримання результатів.
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: Python 2.7.16 та Python 3.7.4
ssl.OPENSSL_VERSION
). Вам не потрібні всі ці заголовки для спростування, просто звичайний старий get (URL) зробить це.