Python3 Web-соскоб не могу войти на страницу? Отметка? - PullRequest
0 голосов
/ 31 марта 2020

Итак, я только начал изучать изучение веб-страниц с помощью python3 и хочу войти на этот сайт: https://dienynas.tamo.lt/Prisijungimas/Login

Требуемые данные формы: Имя пользователя: имя пользователя , Пароль: пароль, IsMobileUser: false, ReturnUrl: '', RequireCaptcha: false, Отметка времени: 2020-03-31 14:11:21, SToken: 17a48bd154307fe36dcadc6359681609f4799034ad5cade3e1b31864f25fe12f

1009
from bs4 import BeautifulSoup
import requests
from lxml import html
from datetime import datetime

data = {'UserName': 'username',
           'Password': 'password',
           'IsMobileUser': 'false',
           'ReturnUrl': '',
           'RequireCaptcha': 'false'
           }

login_url = 'https://dienynas.tamo.lt/Prisijungimas/Login'
url = 'https://dienynas.tamo.lt/Pranesimai'

with requests.Session() as s:
    r = s.get(login_url)
    soup = BeautifulSoup(r.content, "lxml")
    AUTH_TOKEN = soup.select_one("input[name=SToken]")["value"]
    now = datetime.now()
    data['Timestamp'] = f'{now.year}-{now.month}-{now.day} {now.hour}:{now.minute}:{now.second}'
    data["SToken"] = AUTH_TOKEN
    r = s.post(login_url, data=data)
    r = s.get(url)
    print(r.text)
1009 *1009* 1009 *1009* 1009 *1009* 1009 *1009* 1009 *1009* 1009 *1009*

И я не могу войти на страницу, я думаю, что неправильно сделал метку времени? Пожалуйста, помогите:)

Редактировать: поэтому сегодня я немного изменил свой код, потому что я обнаружил, что большинство данных, которые мне нужны, были в скрытых вводах так:

data = {'UserName': 'username',
        'Password': 'password',
        }

AUTH_TOKEN = soup.find("input",{'name':"SToken"}).get("value")
    Timestamp = soup.find("input",{'name':"Timestamp"}).get("value")
    IsMobileUser = soup.find("input",{'name':"IsMobileUser"}).get("value")
    RequireCaptcha = soup.find("input", {'name': "RequireCaptcha"}).get("value")
    ReturnUrl = soup.find("input", {'name': "ReturnUrl"}).get("value")

и добавил это к данным словарь, я также пытался создать заголовки:

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
r = s.post(login_url, data=data, headers=headers)

и да, у меня ничего не работает .. Может быть, есть способ узнать, почему я не могу войти?

1 Ответ

0 голосов
/ 31 марта 2020

Я согласен с вами. Кажется, вы отправляете неправильную метку времени. На веб-сайте есть вход для него, так что вы можете отсканировать его как токен и отправить его, или вы можете сгенерировать ту же временную метку с тем же часовым поясом, который использует веб-сайт

from bs4 import BeautifulSoup
import requests
from lxml import html
from datetime import datetime
from pytz import timezone


data = {'UserName': 'username',
           'Password': 'password',
           'IsMobileUser': 'false',
           'ReturnUrl': '',
           'RequireCaptcha': 'false'
           }

login_url = 'https://dienynas.tamo.lt/Prisijungimas/Login'
url = 'https://dienynas.tamo.lt/Pranesimai'

with requests.Session() as s:
    r = s.get(login_url)
    soup = BeautifulSoup(r.content, "lxml")
    AUTH_TOKEN = soup.find("input",{'name':"SToken"}).get("value")
    Timestamp  = soup.find("input",{'name':"Timestamp"}).get("value") #2020-03-31 15:36:37
    now = datetime.now(timezone('Etc/GMT-3'))
    data['Timestamp'] = now.strftime('%Y-%m-%d %H:%M:%S') #2020-03-31 15:36:36
    print('Timestamp from website',Timestamp)
    print('Timestamp from python',data['Timestamp'])
    data["SToken"] = AUTH_TOKEN
    r = s.post(login_url, data=data)
    r = s.get(url)
    print(r.text)
...