Я не могу войти на сайт с помощью сеансов запросов - PullRequest
0 голосов
/ 17 января 2019

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

Например: 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())

Ответы [ 3 ]

0 голосов
/ 18 января 2019

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

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

и пароли

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

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

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

#!/usr/bin/env python 
import requests
payload = { 'username': 'user@email.com', '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.

0 голосов
/ 18 января 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)

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

0 голосов
/ 18 января 2019

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...