Saya tidak bisa masuk ke situs dengan Sesi Permintaan

Saya ingin masuk ke situs web dengan sesi permintaan.

Misalnya: https://turbobit.net

Tapi tidak bisa login normal, kodenya sebagai berikut:

# 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 sumber
comment
Pertanyaan Anda sepenuhnya salah. BeautifulSoup sebenarnya adalah parser HTML, bukan perpustakaan pembuat kueri HTTP seperti permintaan.   -  person 0xInfection    schedule 17.01.2019
comment
Saya salah mengutarakan, maaf maksud saya saya menggunakan BeautifulSoup, lalu saya ingin login ke website tersebut, tetapi saya tidak bisa login menggunakan kode yang saya tulis.   -  person hello123    schedule 18.01.2019


Jawaban (3)


BeautifulSoup tidak berinteraksi dengan aplikasi web secara realtime, Ia hanya mengambil data sebagai input (string/ byte-string) dan mem-parsingnya sebagai HTML yang diformat dengan benar.

Jika Anda ingin menyimulasikan interaksi dengan aplikasi web seperti mengeklik, memasukkan teks, dan masuk. Anda harus mencoba opsi lain seperti Selenium yang merupakan Kerangka Otomatisasi Peramban dan ini sangat berguna dalam kasus seperti itu.

Berikut ini contoh untuk melakukan login otomatis melalui skrip python

person Zeeshan Sultan    schedule 18.01.2019
comment
Pertanyaannya salah arah, ya, tetapi konteks masalahnya tetap ada - requests.session() harus dapat diisi dengan nama pengguna/kata sandi atau cookie untuk memalsukan sesi login - person OneCricketeer; 18.01.2019
comment
Saya salah mengutarakan, maaf maksud saya saya menggunakan BeautifulSoup, lalu saya ingin login ke website tersebut, tetapi saya tidak bisa login menggunakan kode yang saya tulis. - person hello123; 18.01.2019
comment
Zeeshan Sultan, terima kasih, saya akan mencobanya. Dan terima kasih, kriket_007. - person hello123; 18.01.2019

Pertama-tama cari tahu nama input yang digunakan pada formulir situs web untuk nama pengguna

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

dan kata sandi

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

dan gantikan pada skrip di bawah ini. Ganti juga URL untuk menunjuk ke situs yang diinginkan untuk masuk.

Contoh kode: 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)

Bonusnya:

Untuk menjalankan skrip ini dari baris perintah pada sistem berbasis UNIX, letakkan skrip ini di sebuah direktori, misalnya home/scripts dan tambahkan direktori ini ke jalur Anda di ~/.bash_profile atau file serupa yang digunakan oleh terminal.

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

Kemudian buat link ke skrip python ini di dalam home/scripts/login.py

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

Tutup terminal Anda, mulai terminal baru, jalankan login.

person 0xInfection    schedule 18.01.2019

Saya sudah berhasil login, kodenya sebagai berikut:

# 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)

Terima kasih atas bantuan Anda!

person hello123    schedule 18.01.2019