python ssologin_如何爬虫模拟登陆SSO

there are two main way to login

use selenium ==>for SSO, oracle will reject this behavior. "

System error. Please re-try your action. If you continue to get this error, please contact the Administrator.

"

import requests

import sys

import io

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf8')

cap = DesiredCapabilities().FIREFOX

cap["marionette"] = False

browser = webdriver.Firefox()

url2 = 'xxx'

browser.get(url2)browser.implicitly_wait(300)

username = browser.find_element_by_id('sso_username')

username.send_keys('xxxx')

password = browser.find_element_by_id('ssopassword')

password.send_keys('xxxx')

student = browser.find_elements_by_link_text('Sign In')

student.click()

browser.get(url2)

browser.save_screenshot('picture1.png')

print(browser.page_source.encode('utf-8').decode())

browser.quit()

#/bin/python

import sys

from lxml import etree

import requests

import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

s = requests.session()

s.trust_env = False # fastercookie = Noneusername = 'username'password = 'pwd'def login():

header = {'User-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',

'Connection':'keep-alive'}

form_data = {'ssousername':'xxxx',

'password':'xxxxx'}

"""1. give get http request to server2. redirect to login url3. send back http response4. from respnose.cookies to get request id, from response.content to get token.5. use request id, token and account to create a form data, give post http request to server6. server to authetication, validate the session.7. that session can be used to go to any urls now."""

goto_url='xxxxx'

login_url = 'xxxxx'

print('login...')

res = s.get(goto_url, headers=header, verify=False)

cookie = res.cookies

for key in res.cookies.get_dict():

if key.startswith('OAM_REQ_ID_'):

form_data['request_id'] = key.replace('OAM_REQ_ID_', '')

#from http response body, to get token.

form_data['site2pstoretoken'] = str(etree.HTML(res.content).xpath('//input[@name="site2pstoretoken"]/@value')[0])

form_data['OAM_REQ'] = str(etree.HTML(res.content).xpath('//input[@name="OAM_REQ"]/@value')[0])

res = s.post(login_url, headers=header, params=form_data, allow_redirects=False, verify=False)

cookie = res.cookies

print("post login params to{0}, http status{1}, cookie :{2}".format(login_url, res.status_code, cookie))

print(cookie.get_dict())

res = s.get(goto_url, headers=header, verify=False)

print res.content

好的,我可以为您提供一个简单的Python代码示例,用于模拟登陆新浪微博。请注意,这只是一个示例,具体的实现方法可能因为新浪微博的更新而有所不同。 ```python import requests from lxml import etree # 定义登录函数 def login(username, password): # 创建一个Session对象,用于保持登录状态 session = requests.Session() # 访问登录页面,获取一些必要的参数 url = 'https://login.sina.com.cn/signup/signin.php' response = session.get(url) html = etree.HTML(response.text) vk = html.xpath('//input[@name="vk"]/@value')[0] action = html.xpath('//form[@id="SinaLoginform"]/@action')[0] # 构造登录请求 data = { 'username': username, 'password': password, 'vk': vk, 'returntype': 'META', 'encoding': 'UTF-8', 'entry': 'sso', 'gateway': '1', 'from': 'null', 'savestate': '30', 'userticket': '0', 'pagerefer': '', 'wsseretry': 'servertime_error', 'pcid': '', 'door': '', 'appkey': '1', 's': '1', 'vsnf': '1', 'su': '', 'service': 'sso', 'servertime': '', 'nonce': '', 'pwencode': 'rsa2', 'rsakv': '', 'sp': '', 'sr': '', } response = session.post(action, data=data, allow_redirects=False) # 获取重定向链接,访问该链接即可完成登录 location = response.headers.get('Location') session.get(location) return session # 使用示例 if __name__ == '__main__': username = 'your_username' password = 'your_password' session = login(username, password) # 使用session对象访问需要登录后才能访问的页面 response = session.get('https://weibo.com/') print(response.text) ``` 请将 `your_username` 和 `your_password` 替换为您自己的用户名和密码。此外,需要安装 `requests` 和 `lxml` 两个库,可以使用 `pip` 命令进行安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值