zoukankan      html  css  js  c++  java
  • 用selenium获取cookies

    前言:由于登录反爬措施的越来越麻烦,甚至出现了12306这种看图识物的无敌验证码,我只能说,我选择死亡。这就衍生出了使用selenium来获取获取cookies。

    实例:获取qq空间cookies,亲测成功2018-3-7(注意点:chromedriver.exe的路径输入)

     
      from selenium import webdriver
      import requests
      import json
      import time
     1 def get_cookies():
     2     browser = webdriver.Chrome(executable_path="D:SeleniumDemo-masterchromedriver.exe")
     3     browser.get("https://user.qzone.qq.com/xxx/infocenter")# xxx 改为qq账号
     4     input("请登陆后按Enter")
     5     #print(browser.get_cookies())
     6     cookie={}
     7     for i in browser.get_cookies():
     8         cookie[i["name"]] = i["value"]
     9     with open("cookies.txt","w") as f:
    10         f.write(json.dumps(cookie))
    11     # time.sleep(5)
    12     # button = browser.find_element_by_xpath('//*[@id="switcher_plogin"]')
    13     # button.click()
    14 
    15     #browser.close()
    16 def get_content():
    17     user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
    18     with open("cookies.txt","r")as f:
    19         cookies = f.read()
    20         cookies = json.loads(cookies)
    21     session = requests.session()
    22     html = session.get("https://user.qzone.qq.com/xxx/infocenter",headers={"User-Agent":user_agent},cookies=cookies) # xxx改为qq账号
    23     print(html.text)
    24 
    25 if __name__ == "__main__":
        get_cookies()
        get_content()

    cookies一保存,至少短期内是可以省下登录的时间。

    改进:(自动填写账号密码)

     1 def get_cookies():
     2     """获取cookies保存为txt"""
     3     browser = webdriver.Chrome(executable_path="D:SeleniumDemo-masterchromedriver.exe")
     4     browser.get("https://user.qzone.qq.com/")
     5 
     6     #input("请登陆后按Enter")
     7     browser.switch_to.frame("login_frame")
     8     button = browser.find_element_by_css_selector('#switcher_plogin')
     9     button.click()
    10     account = browser.find_element_by_css_selector("#u")
    11     account.clear()
    12     account.send_keys("") #此处写账号
    13 
    14     password = browser.find_element_by_css_selector("#p")
    15     password.clear()
    16     password.send_keys("") #此处写密码
    17 
    18     login_button = browser.find_element_by_css_selector("#login_button")
    19     login_button.click()
    20     #print(browser.get_cookies())
    21 
    22     cookie={}
    23     for i in browser.get_cookies():
    24         cookie[i["name"]] = i["value"]
    25     with open("cookies.txt","w") as f:
    26         f.write(json.dumps(cookie))
    27     input()
    28     #browser.close()
  • 相关阅读:
    java网络编程客户端与服务端原理以及用URL解析HTTP协议
    java网络编程TCP传输—流操作—服务端反馈与客户端接收
    java网络编程TCP传输—流操作—拿到源后的写入动作
    用java网络编程中的TCP方式上传文本文件及出现的小问题
    关于session设置
    mencache
    打包
    反编译
    原型工具
    开源的jdbc
  • 原文地址:https://www.cnblogs.com/zenan/p/8522666.html
Copyright © 2011-2022 走看看