Python 我能';t使用请求会话登录站点

Python 我能';t使用请求会话登录站点,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我想通过请求会话登录网站 例如: 但无法正常登录,代码如下: # 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' head

我想通过请求会话登录网站

例如:

但无法正常登录,代码如下:

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


BeautifulSoup不与web应用程序实时交互,它只将数据作为输入(字符串/字节字符串),并将其解析为格式正确的HTML

如果您想模拟与web应用程序的交互,例如单击、输入文本和登录。您应该尝试其他选项,如selenium,它是一个浏览器自动化框架,在这种情况下非常方便


下面是一个执行的示例

首先找出网站表单上用户名的输入名称

<form ... name=username ... /> 
奖金:

要在基于UNIX的系统上从命令行运行此脚本,请将其放置在目录中,即
home/scripts
,并将此目录添加到
~/.bash\u 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

关闭您的终端,启动一个新的,运行
登录
我已成功登录,代码如下:

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

#编码=utf-8
导入lxml
进口稀土
导入请求
导入套接字
进口袜子
导入系统
导入时间
从bs4导入BeautifulSoup
从urllib.request导入urlopen
从请求导入请求,会话
email=“您的电子邮件”
password=“你的密码”
s=请求。会话()
user_agent=“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/73.0.3673.0 Safari/537.36”
标题={
“授权”:“turbobit.net”,
'方法':'POST',
“路径”:“/lang/en”,
“主机”:“turbobit.net”,
“Referer”:https://turbobit.net/login',
“用户代理”:用户代理
}
def登录_站点(电子邮件、密码):
登录https://turbobit.net/user/login'
表格_数据={
“用户[登录]”:电子邮件,
“用户[通行证]”:密码,
“用户[提交]”:“登录”,
“用户[内存]”:“打开”
}
login=s.post(login\u url,data=form\u data,headers=headers)
#打印(f“text={login.text}”)
soup=BeautifulSoup(login.text,“lxml”)
''如果登录成功,输出中将有''''
msgs=soup.find('div',{“class”:“用户菜单”})
打印(msgs)
登录站点(电子邮件、密码)

谢谢你的帮助

你的问题完全错了。BeautifulSoup实际上是一个HTML解析器,而不是一个HTTP查询生成器库,就像请求一样。我表示了一个错误,对不起,我的意思是我使用了BeautifulSoup,然后我想登录网站,但我不能使用我编写的代码登录。是的,问题被误导了,但问题的上下文仍然是-
requests.session()
应该能够加载用户名/密码或cookie以伪造登录会话。我表示错误,对不起,我的意思是我使用的是BeautifulSoup,然后我想登录网站,但我无法使用我编写的代码登录。泽山苏丹,谢谢,我会尝试。谢谢你,蟋蟀007。