某某登录的两种方法

方法一:微博登录

 1 from selenium import webdriver
 2 from selenium.webdriver.common.by import By
 3 from selenium.webdriver.support.ui import WebDriverWait
 4 from selenium.webdriver.support import expected_conditions as EC
 5
 6
 7 # 定义一个taobao类
 8 class taobao_infos:
 9
10     # 对象初始化
11     def __init__(self):
12         url = ‘https://login.taobao.com/member/login.jhtml‘
13         self.url = url
14
15         options = webdriver.ChromeOptions()
16         options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})  # 不加载图片,加快访问速度
17         options.add_experimental_option(‘excludeSwitches‘,
18                                         [‘enable-automation‘])  # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
19
20         self.browser = webdriver.Chrome(options=options)
21         self.wait = WebDriverWait(self.browser, 10)  # 超时时长为10s
22
23     # 登录淘宝
24     def login(self):
25         # 打开网页
26         self.browser.get(self.url)
27
28         # 等待 密码登录选项 出现
29         password_login = self.wait.until(
30             EC.presence_of_element_located((By.CSS_SELECTOR, ‘.qrcode-login > .login-links > .forget-pwd‘)))
31         password_login.click()
32
33         # 等待 微博登录选项 出现
34         weibo_login = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘.weibo-login‘)))
35         weibo_login.click()
36
37         # 等待 微博账号 出现
38         weibo_user = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘.username > .W_input‘)))
39         weibo_user.send_keys(weibo_username)
40
41         # 等待 微博密码 出现
42         weibo_pwd = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘.password > .W_input‘)))
43         weibo_pwd.send_keys(weibo_password)
44
45         # 等待 登录按钮 出现
46         submit = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ‘.btn_tip > a > span‘)))
47         submit.click()
48
49         # 直到获取到淘宝会员昵称才能确定是登录成功
50         taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,
51                                                                       ‘.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ‘)))
52         # 输出淘宝昵称
53         print(taobao_name.text)
54
55
56 if __name__ == "__main__":
57     # chromedriver_path = "/Users/bird/Desktop/chromedriver.exe"  # 改成你的chromedriver的完整路径地址
58     weibo_username = ""  # 改成你的微博账号
59     weibo_password = ""  # 改成你的微博密码
60
61     a = taobao_infos()
62     a.login()  # 登录

方法二:保存cookie

  先保存cookie

import json
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
dirver = webdriver.Chrome(options=options)
dirver.get(
    ‘https://login.taobao.com/member/login.jhtml‘)
# 这里是为了等待手机扫码登录, 登录后回车即可
input("请回车登录")
dictCookies = dirver.get_cookies()
jsonCookies = json.dumps(dictCookies)
# 登录完成后,将cookies保存到本地文件
with open("./cookies_tao.json", "w") as fp:
    fp.write(jsonCookies)

  再次登录无需验证

 1 import json
 2 import time
 3 from selenium import webdriver
 4 from selenium.webdriver.chrome.options import Options
 5
 6 options = Options()
 7 options.add_argument("--headless")
 8 dirver = webdriver.Chrome(options=options)
 9 # 初次建立连接, 随后方可修改cookie
10 dirver.get(‘http://www.taobao.com‘)
11 # 删除第一次登录是储存到本地的cookie
12 dirver.delete_all_cookies()
13 # 读取登录时储存到本地的cookie
14 with open("cookies_tao.json", "r", encoding="utf8") as fp:
15     ListCookies = json.loads(fp.read())
16
17 for cookie in ListCookies:
18     dirver.add_cookie({
19         ‘domain‘: ‘.taobao.com‘,  # 此处xxx.com前,需要带点
20         ‘name‘: cookie[‘name‘],
21         ‘value‘: cookie[‘value‘],
22         ‘path‘: ‘/‘,
23         ‘expires‘: None
24     })
25
26 # 再次访问页面,便可实现免登陆访问
27 dirver.get("https://www.taobao.com")
28 time.sleep(3)
29 # 将页面保存为图片用于查看是否登录成功
30 dirver.save_screenshot("./taobao.png")
31 dirver.quit()

原文地址:https://www.cnblogs.com/wangtaobiu/p/11159352.html

时间: 2024-08-10 20:50:09

某某登录的两种方法的相关文章

网站接入QQ登录的两种方法

1 第一种使用系统自带按钮登录,但是这样会弹出新窗口,不喜欢 2 //调用QC.Login方法,指定btnId参数将按钮绑定在容器节点中 3 QC.Login({ 4 //btnId:插入按钮的节点id,必选 5 btnId:"qqLoginBtn", 6 //用户需要确认的scope授权项,可选,默认all 7 scope:"all", 8 //按钮尺寸,可用值[A_XL| A_L| A_M| A_S| B_M| B_S| C_S],可选,默认B_S 9 size

Python 模拟淘宝登录的两种方法

方法一.urllib的post登录 import urllib import urllib2 import cookielib def taobao(username,password): cj = cookielib.CookieJar() print cj post_data = urllib.urlencode( { 'TPL_password':password, 'TPL_username':username, }) path = 'https://login.taobao.com/m

登录用到了两种方法GET和POST方法 用reqeusts实现

这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等.也就是说,客户端也做着一些本该由服务器来做的一些事情 这个错误第一反应是是不是新的这个gateway节点有问题啊?但是想想这是不可能的,因为并不是所有请求都不可以,而且找了gateway部门的同事问了下,也不存在对请求单独处理的逻辑. 认证的同时要抓取页面表单的其他input标签的name和value.joomla的较为简单,网站一般不会明文传输用户名和密码,遇到这种情况需要分析引入的js文件,模拟加密算法.

实现登录状态保持的两种方法 cookie、session和token

实现登录状态保持的两种方法:第一种,cookie和session的配合使用实现原理:当用户请求页面,一般需要先登录,用户第一次输入用户名和密码之后,前台发送post请求,后台获取用户信息,通过查询数据库来验证用户信息是否正确,如果验证通过,则会开辟一块session空间来储存用户数据,并且同时生成一个cookie字符串,由后台返回给前台,前台接收后,会把这个cookie字符串储存到浏览器的cookie空间中,这个cookie就相当于一把钥匙,可以打开后台存储对应用户信息的锁,当用户下一次请求的时

Linux中生成密钥的两种方法

Linux中生成密钥的两种方法 SSH服务支持一种安全认证机制,即密钥认证.所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(publickey), 任何人都可以看到其内容,用于加密:另一个称为密钥(privatekey),只有拥有者才能看到,用于解密.通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难. ssh的密钥认证就是使用了这一特性.服务器和客户端都各自拥有自己的公钥和密钥.如何使用密钥认证登录linux服务器呢? 在使用密钥认证远程登入linux之前,我们

suse下设置IP的两种方法

/Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2 释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2 第二种SUSE Linux IP设置方法 在suse操作系统中每个网卡都有一个配置文件,在/etc/sysc

MySQL单实例重置密码的两种方法

MySQL单实例重置密码的两种方法 在工作学习中,我们有时会忘记数据库的密码,下面是MySQL单实例密码重置的步骤. 说明: (1)[[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) (2)[[email protected] ~]# mysql --version mysql  Ver 14.14 Distrib 5.7.13, for Linux (i686) using  EditLine wr

两种方法实现队满和队空的判断操作(循环队列)

本周的作业要求: 1.给出循环队列的存储结构定义. 2.完成循环队列的基本操作函数. 1)      初始化循环队列: 2)      建立循环队列: 3)      实现入队和出队操作: 4)     采用下面两种方法实现对满和队空的判断操作: 方法一:修改队满条件,浪费一个元素空间,队满时数组中只有一个空闲单元(必做):   方法二:设置标志flag,当front==rear且flag=0时为队空,当front==rear且flag=1时为队满(必做): 3.编写主函数实现基本操作函数功能,

忘记linux中root密码怎么办?两种方法两步教你轻松搞定修改新的密码(仅限CentOS6.X)

忘记了Linux的系统管理员密码时,可以在本地通过进入单用户模式来重置root密码.两种方法(只需两步)具体步骤如下: 方法一: 在进入grub启动菜单的时候 按"a" 键操作编辑 kernel 参数后面加"single"告诉linux内核以单用户模式运行,回车启动即可.进去后,在命令行输入passwd回车,输入新的密码,重复输入,搞定.重启后输入新的密码即可登录.(注:grub界面时间很短,大概5秒,把握机会,如果不想等的话,在linux启动的时候随便按下一个键例