【问题标题】:Python authentication does not work on HTTPS pagePython 身份验证在 HTTPS 页面上不起作用
【发布时间】:2019-11-23 23:00:02
【问题描述】:

我对@9​​87654322@ 很陌生,但我收到一些错误消息以登录此页面。

我认为这可能与使用 Javascript 有关,但我不确定。有任何想法吗?

我也尝试了BeautifulSoup,但似乎发送的数据没有归因于表单进行身份验证。

下面是我尝试过的代码。

import requests 

url = "virtelaview.net/web/guest/home" 
myobj = {'login': 'MYLOGIN', 'password': 'MYPASS'} 
x = requests.post(url, data = myobj, auth = ('login', 'password'), verify=False) 

【问题讨论】:

  • ''' 导入请求 url = "virtelaview.net/web/guest/home" myobj = {'login': 'MYLOGIN', 'password': 'MYPASS'} x = requests.post(url, data = myobj , auth = ('login', 'password'), verify=False) '''
  • 但是哪个是错误? ...您到底想做什么?

标签: python authentication beautifulsoup python-requests


【解决方案1】:

基本上,您传递了错误的登录 url,而您跳过的重点是保持会话,首先获取 Session id,然后将其传递给 headers

import requests
from bs4 import BeautifulSoup
import urllib3

urllib3.disable_warnings()

headers = {
    'COOKIE_SUPPORT': 'true',
    'GUEST_LANGUAGE_ID': 'en_US',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
}
data = {
    '_58_redirect': '',
    'login': 'a@a.com',
    'password': 'testpass'
}
url = 'https://www.virtelaview.net/web/guest/home?p_auth=&p_p_id=58&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&saveLastPath=0&_58_struts_action=/login/login'
with requests.Session() as s:
    s.get(url, headers=headers, verify=False)
    bo = dict(s.cookies)
    headers['JSESSIONID'] = bo['JSESSIONID']
    r = s.post(url, data=data, verify=False, headers=headers)
    soup = BeautifulSoup(r.text, 'html.parser')
    print(soup.prettify())

因为我使用了错误的登录信息,所以我得到了以下回复:

<div class="portlet-msg-error">Authentication failed. Please try again.</div>

这证明我走在正确的轨道上。

如果上面的代码没有记录你的另一个解决方案。这里我在每个请求期间都获取了p_auth 参数value,因为它是动态的。

import requests
from bs4 import BeautifulSoup
import urllib3

urllib3.disable_warnings()

headers = {
    'COOKIE_SUPPORT': 'true',
    'GUEST_LANGUAGE_ID': 'en_US',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
}
data = {
    '_58_redirect': '',
    'login': 'a@a.com',
    'password': 'testpass'
}
url = 'https://www.virtelaview.net/web/guest/home?p_auth=&p_p_id=58&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&saveLastPath=0&_58_struts_action=/login/login'
with requests.Session() as s:
    s.get(url, headers=headers, verify=False)
    bo = dict(s.cookies)
    headers['JSESSIONID'] = bo['JSESSIONID']
    r = s.post(url, data=data, verify=False, headers=headers)
    soup = BeautifulSoup(r.text, 'html.parser')
    for item in soup.findAll('form', attrs={'class': 'aui-form'}):
        login = item.get('action')
    r1 = s.post(login, data=data, verify=False, headers=headers)
    soup1 = BeautifulSoup(r1.text, 'html.parser')
    print(soup1.prettify())

【讨论】:

  • @GabrielSnikuer 欢迎您 :) 如果它帮助您实现目标,请接受我的回答。
猜你喜欢
  • 2011-09-27
  • 2011-06-23
  • 2017-04-10
  • 2016-06-03
  • 2015-06-11
  • 1970-01-01
  • 2012-10-04
相关资源
最近更新 更多