oturum açmada başarısız oluyor Burada yaptığınız şeyleri takdir ediyorum. Genellikle Stackoverflow'un yardımıyla sorunlarımı çözebiliyorum, ama bu sefer sıkışıp kaldım. Umarım bana yardım edebilirsin!Python istekleri
Soru şudur: this webpage oturum açmak için nasıl Python isteklerini?
Benim adımlar:
- giriş url
- giriş bilgilerini verin alın. HTML'ye göre, bir 'e-posta' ve 'şifre' sağlamanız gerekiyor. Oturum
Maalesef kolay yaklaşım bu durumda çalışmak için görünmüyor başarılı olup olmadığını
details
çıktısı: Oturum başarılı olup olmadığını <script>
dataLayer = [{
'environment': 'production',
'loggedIn': '0',
'userCode': '',
'rank': '',
'totalBalance': '0',
'overAgeCasino': '0'
}];
</script>
Açıkçası, 'loggedIn'
ait '0'
'1'
olarak değişmelidir.
Bir örnekte, bir 'csrftoken' eklemeniz gerekebileceğini ve bunun HTML'de 'gizli' bir tür olarak bulunabileceğini buldum. Ancak, type = 'hidden' kısmındaki adın bununla hiçbir ilgisi yok gibi görünüyor ve ayrıca hiçbir değeri yok (link to screenshot of HTML). Başka bir yerde ben bir CSFR belirteci de cookiejar depolandığını okumak, ama orada değildir:
<RequestsCookieJar[<Cookie PHPSESSID=5dib6cf6kpvf29dsn725ljcec7 for .napoleongames.be/>, <Cookie locale=en_GB for .napoleongames.be/>, <Cookie user=false for .napoleongames.be/>]>
bana zor bu günlüğü mümkün değildir inanmak buluyorum ama fikirlerimiz tükendi ettik . Birisi urllib (2) ile nasıl yapılacağını bilirse, aynı zamanda yararlıdır. Selenium'u hiç kullanamadığım için kullanmamayı tercih ederim.
Kodu:
import requests
from bs4 import BeautifulSoup
from datetime import date
date_str = str(date.today())
login_url = 'https://en-gb.sports.napoleongames.be/user/login'
protected_url = 'proctected_url'
payload = {'email': '[email protected]',
'password': '*********'}
with requests.Session() as session:
session.get(login_url)
login_page = session.post(login_url,
data=payload)
html_body = BeautifulSoup(login_page.content, 'html.parser').find(
name='body', attrs={'id': 'user_login'})
details = html_body.findAll('script')[0]
page = session.get(protected_url)
Başlıkları: Bir formu göndermek
{'Date': 'Wed, 06 Sep 2017 23:45:52 GMT', 'Server': 'Apache', 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT', 'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', 'Pragma': 'no-cache', 'X-Frame-Options': 'SAMEORIGIN', 'X-Cache-Page': 'MISS', 'Set-Cookie': 'locale=en_GB; Expires=Mon, 05-Mar-2018 23:45:52 GMT; Domain=.napoleongames.be; Path=/, user=false; expires=Mon, 05-Mar-2018 23:45:52 GMT; Max-Age=15552000; path=/; domain=.napoleongames.be, loyalty=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=.napoleongames.be', 'Strict-Transport-Security': 'max-age=15768000', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Content-Length': '10840', 'Connection': 'close', 'Content-Type': 'text/html'}
Maalesef, bazı modern web sitesi çerçeveleri, elbette taleplerin işleyemediği javascript'e dayanıyor. Eğer işiniz modern web sayfalarını düzenli olarak kazımanızı gerektiriyorsa, selenuma alışmanızı tavsiye ederim, bu mükemmel ve bu tür sorunları kolayca çözmenizi sağlar. –
@DanielleM. İstekleri ile javascript etrafında yollar vardır. [Bağlantı] (https://stackoverflow.com/a/38081914/7073884) –
@DanielleM. Hayır, sadece eğlence içindi.Selenium kullandığımda ortaya çıkan hataları anlamalıyım. İlk önce çözümün downgrade olduğu bir yol sorunu var, ama sonra geckodriver ile bir şeyler ters gitti ve sonra önerilen çözüm yükseltmek oldu, bu yüzden – Rob