ฉันไม่สามารถเข้าสู่ไซต์ด้วยเซสชันคำขอได้

ฉันต้องการเข้าสู่ระบบเว็บไซต์ตามเซสชันคำขอ

ตัวอย่างเช่น: 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 ที่มีรูปแบบถูกต้อง

หากคุณต้องการจำลองการโต้ตอบกับเว็บแอปพลิเคชัน เช่น การคลิก การป้อนข้อความ และการเข้าสู่ระบบ คุณควรลองใช้ตัวเลือกอื่นๆ เช่น ซีลีเนียม ซึ่งเป็น Browser Automation Framework ซึ่งมีประโยชน์มากในกรณีเช่นนี้

นี่คือตัวอย่างการดำเนินการเข้าสู่ระบบอัตโนมัติผ่านสคริปต์ python

person Zeeshan Sultan    schedule 18.01.2019
comment
คำถามถูกเข้าใจผิด ใช่ แต่บริบทของปัญหายังคงอยู่ - requests.session() ควรโหลดด้วยชื่อผู้ใช้ / รหัสผ่านหรือคุกกี้เพื่อปลอมเซสชันการเข้าสู่ระบบ - 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

จากนั้นสร้างลิงก์ไปยังสคริปต์หลามนี้ภายใน 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