进过两天的研究终于实现了cookie的免密登录,其实就是session。特别开心,因为在Python爬虫群里问那些大佬,可是他们的回答令我寒心,自己琢磨!!!
靠谁比如靠自己,为此我总结下经验,以免入门的小白再次踩这样的吭。其实网上很多博客写的都比较不详细甚
首先问题自己思考,不懂得去群里问问,然后最重要的要理解事物的本质,只有理解后才能运用它;最后在百度一下把所有相关的博客都点开,一条一条的看一遍总结下规律,比较喽的就舍弃,这样基本上都能得到启发作用。比如selenium的本质就是操作浏览器的,那么操作cookie也是操作浏览器的,并且用selenium打开浏览器时什么都没有,如果进入某个网站就会生成cookie先关信息。等待,那么我们可以用selenium打开网站之后让他清除所有cookie避免干扰,然后睡眠20秒以便等我们登陆,这是就会产生cookie,我们将它获取下来就可以实现登陆了。
下面直接上代码:
# 登录 def login_jd(): # 登录前清除所有cookie browser.get('https://www.baidu.com/') browser.delete_all_cookies() # 打印登录前的cookie cookieBefore = browser.get_cookies() print(cookieBefore) print("------------------------------------------------------------------------") time.sleep(2) list_cookies = [ {'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1420_21120_29074_29237_2518_2909_29134_2832_28585_26350_2913'}, {'domain': '.baidu.com', 'expiry': 159184274.325927, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'FF789623EA1785FF0D55ED0401D057B2:FG=1'}, {'domain': 'www.baidu.com', 'expiry': 1563289, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '123143'}, {'domain': '.baidu.com', 'expiry': 1560354688.892916, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5BF6F3CD40255D22BCDA1598'}, {'domain': '.baidu.com', 'expiry': 1819468287.471656, 'httpOnly': True, 'name': 'BDUSS', 'path': '/', 'secure': False, 'value': 'tGem1JzblNpOa1VVek0yLThmbWR6RxENWZtcVNwUThpT2hCLTVsUFBQUFBJCQAAAAAAAAAAAEAAAA4MdBAd3d3d2dnZ2dnZWVlZWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkI~1y5CP9cVm'}, {'domain': '.baidu.com', 'expiry': 2569420288, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': '587A2695FCD6D043A5FE5139E4F'}, {'domain': '.baidu.com', 'expiry': 3707755.819949, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '156027786'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '1'} ] # 获取之后的cookie cookies = browser.get_cookies() print(browser.get_cookies()) # 将获取的的所有cookies添加到浏览器 for cookie in list_cookies: browser.add_cookie(cookie) print(cookie) time.sleep(2) # 刷新页面即可更新cookie browser.refresh() time.sleep(505) browser.quit()
示例二:
首先使用用户名和账号,登录获取cookie
import json import time from selenium.webdriver.chrome.options import Options from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.common.exceptions import NoSuchElementException class Crawler(): def gather(): chrome_options = Options() chrome_options.add_argument("window-size=1024,768") driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='C:\devtool\Anaconda\Scripts\chromedriver') wait = WebDriverWait(driver, 1) ##登录百度知道 logurl = 'https://zhidao.baidu.com/' #登录前清楚所有cookie driver.delete_all_cookies() driver.get(logurl) ##登录前打印cookie print(driver.get_cookies()) ##点击登录按钮 driver.find_element_by_xpath('//*[@id="userbar-login"]').click() # driver.find_element_by_id("userbar-login").click() time.sleep(2) ##首次尝试的 默认进入扫码登录的界面 try: footerULoginBtn = driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]') footerULoginBtn.click() #切换到用户名和密码登录 footerULoginBtn_not_exist = False except: footerULoginBtn_not_exist = True ## 用户名跟密码的设置并点击提交 user = driver.find_element_by_name('userName') user.clear() pwd = driver.find_element_by_name('password') pwd.clear() submit = driver.find_element_by_id('TANGRAM__PSP_10__submit') time.sleep(2) user.send_keys('用户名') pwd.send_keys('密码') time.sleep(1) submit.click() time.sleep(1) ## 发送手机验证码 验证 ##点击发送按钮 ###是否需要输入手机验证码 try: driver.find_element_by_xpath('//*[@id="TANGRAM__28__button_send_mobile"]').click() time.sleep(10) ##使用shell交互式,接受验证码 message = input("Tell me the captcha: ") ##输入验证码 captcha = driver.find_element_by_xpath('//*[@id="TANGRAM__28__input_label_vcode"]') time.sleep(1) captcha.send_keys(message) time.sleep(1) ##点击提交 driver.find_element_by_xpath('//*[@id="TANGRAM__28__button_submit"]').click() time.sleep(3) except: time.sleep(1) ### 获取cookie cookie = driver.get_cookies() print(cookie) jsonCookies = json.dumps(cookie) with open('vcyber.json', 'w') as f: f.write(jsonCookies) time.sleep(30) Crawler.gather()
获取cookie后,可以不用输入密码登录
import json import time from selenium.webdriver.chrome.options import Options from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.common.exceptions import NoSuchElementException class Crawler(): def gather(): chrome_options = Options() chrome_options.add_argument("window-size=1024,768") driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='C:\devtool\Anaconda\Scripts\chromedriver') wait = WebDriverWait(driver, 1) ##登录百度知道 logurl = 'https://zhidao.baidu.com/' #登录前清楚所有cookie driver.delete_all_cookies() driver.get(logurl) f1 = open('vcyber.json') cookie = f1.read() cookie = json.loads(cookie) for c in cookie: driver.add_cookie(c) # # 刷新页面 driver.refresh() Crawler.gather()
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 群星《前途海量 电影原声专辑》[FLAC/分轨][227.78MB]
- 张信哲.1992-知道新曲与精丫巨石】【WAV+CUE】
- 王翠玲.1995-ANGEL【新艺宝】【WAV+CUE】
- 景冈山.1996-我的眼里只有你【大地唱片】【WAV+CUE】
- 群星《八戒 电影原声带》[320K/MP3][188.97MB]
- 群星《我的阿勒泰 影视原声带》[320K/MP3][139.47MB]
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[320K/MP3][148.91MB]
- 刘雅丽.2001-丽花皇后·EMI精选王【EMI百代】【FLAC分轨】
- 齐秦.1994-黄金十年1981-1990CHINA.TOUR.LIVE精丫上华】【WAV+CUE】
- 群星.2008-本色·百代音乐人创作专辑【EMI百代】【WAV+CUE】
- 群星.2001-同步过冬AVCD【环球】【WAV+CUE】
- 群星.2020-同步过冬2020冀待晴空【环球】【WAV+CUE】
- 沈雁.1986-四季(2012梦田复刻版)【白云唱片】【WAV+CUE】
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[FLAC/分轨][257.88MB]
- 《国语老歌 怀旧篇 3CD》[WAV/分轨][1.6GB]