Я не могу войти на сайт с сеансами запросов

Я хочу войти на сайт с помощью сеансов запросов.

Например: https://turbobit.net

Но не могу нормально войти, код такой:

# coding=utf-8

import lxml
import re
import requests
import socket
import socks
import sys
import time
from bs4 import BeautifulSoup
from urllib.request import urlopen



url = 'https://turbobit.net/user/login'


header = {
    'Host': 'turbobit.net',
    'Referer': 'https://turbobit.net/user/login',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3673.0 Safari/537.36'
}

form_data = {
    'user[login]': 'your_email',
    'user[pass]': 'your_password'
}

session = requests.session()
login = session.post(url, data=form_data, headers=header)
page = session.get('https://turbobit.net/').content
soup = BeautifulSoup(page, features='html.parser')

msgs = soup.find('div', {"class": 'logged'})
for msg in msgs:
    print(msg.get_text())

person hello123    schedule 17.01.2019    source источник
comment
Ваш вопрос совершенно неверен. BeautifulSoup на самом деле является парсером HTML, а не библиотекой для создания HTTP-запросов, такой как запросы.   -  person 0xInfection    schedule 17.01.2019
comment
Я выражаю ошибку, извините, я имею в виду, что я использую BeautifulSoup, затем я хочу войти на сайт, но я не могу войти, используя код, который я написал.   -  person hello123    schedule 18.01.2019


Ответы (3)


BeautifulSoup не взаимодействует с веб-приложением в режиме реального времени, он просто принимает данные в качестве входных данных (строка/байтовая строка) и анализирует их как правильно отформатированный HTML.

Если вы хотите имитировать взаимодействие с веб-приложениями, такое как щелчок, ввод текста и вход в систему, вам следует попробовать другие варианты, такие как селен, который представляет собой платформу автоматизации браузера, и в таких случаях он очень удобен.

Вот пример выполнения автоматического входа в систему с помощью скрипта Python.

person Zeeshan Sultan    schedule 18.01.2019
comment
Вопрос был ошибочным, да, но контекст проблемы остается - requests.session() должна иметь возможность загружаться с именем пользователя / паролем или файлом cookie, чтобы подделать сеанс входа в систему. - person OneCricketeer; 18.01.2019
comment
Я выражаю ошибку, извините, я имею в виду, что я использую BeautifulSoup, затем я хочу войти на сайт, но я не могу войти, используя код, который я написал. - person hello123; 18.01.2019
comment
Зишан Султан, спасибо, попробую. И спасибо, cricket_007. - person hello123; 18.01.2019

Прежде всего узнайте название входов, используемых на веб-сайтах, форма для имен пользователей.

<form ... name=username ... /> 

и пароли

<form ... name=password ... /> 

и замените их в приведенном ниже скрипте. Также замените URL-адрес, чтобы он указывал на нужный сайт для входа.

Пример кода: login.py

#!/usr/bin/env python 
import requests
payload = { 'username': '[email protected]', 'password': 'sup3rs3cretp4ssw0rd' } 
url = 'https://example.com/login.html' 
requests.post(url, data=payload, verify=False)

Бонус:

Чтобы запустить этот скрипт из командной строки в системе на базе UNIX, поместите его в каталог, например home/scripts, и добавьте этот каталог к ​​своему пути в ~/.bash_profile или аналогичному файлу, используемому терминалом.

# Custom scripts export
CUSTOM_SCRIPTS=home/scripts
export PATH=$CUSTOM_SCRIPTS:$PATH

Затем создайте ссылку на этот скрипт Python внутри home/scripts/login.py

ln -s ~/home/scripts/login.py ~/home/scripts/login

Закройте терминал, запустите новый, запустите login.

person 0xInfection    schedule 18.01.2019

Я успешно авторизовался, код такой:

# coding=utf-8

import lxml
import re
import requests
import socket
import socks
import sys
import time
from bs4 import BeautifulSoup
from urllib.request import urlopen
from requests import Request, Session


email = "your_email"
password = "yor_password"

s = requests.Session()

user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3673.0 Safari/537.36"
headers = {
    'Authority':'turbobit.net',
    'Method':'POST',
    'Path':'/lang/en',
    'Host': 'turbobit.net',
    'Referer': 'https://turbobit.net/login',
    'User-Agent': user_agent
}


def login_site(email, password):
    login_url = 'https://turbobit.net/user/login'
    form_data = {
        'user[login]': email,
        'user[pass]': password,
        'user[submit]':'Sign in',
        'user[memory]':'on'
        }
    login = s.post(login_url, data=form_data, headers=headers)

    # print(f"text = {login.text}")
    soup = BeautifulSoup(login.text, "lxml")
    '''If the login is successful, there will be "<div class="lang-links in">" in the output.'''
    msgs = soup.find('div', {"class": "user-menu"})
    print(msgs)



login_site(email, password)

Спасибо за вашу помощь!

person hello123    schedule 18.01.2019