zoukankan      html  css  js  c++  java
  • (转)request模拟知乎登录(无验证码机制

    原文:http://www.itnose.net/detail/6755805.html

    import request

    try:

      import cookielib  #python2版本

    except:

      import http.cookiejar as cookielib  #python3版本

    import re

    import 

    session=request.session()

    session.cookies=cookielib.LWPCookieJar(filename="cookies.txt")  #将cookies存储到本地文件

    #加载cookies文件

    try:

      session.cookies.load(ignore_discard=True)

    except:

      print("cookies未能加载")

    User_Agent="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"

    header={

      "HOST"  :  "www.zhihu.com",

      "Referer"  :  "https://www.zhihu.com",

      "User_Agent"  :  User_Agen"

    }

    #获取xsrf

    def get_xsrf():

      response=session.post("https://www.zhihu.com",headers=header)  #请求网页需带上头文件

      match_obj=re.match(' .*name="_xsrf"  value="(.*?)" ')  #注意使用单双引号

      if match_obj:

        return (match_obj(1))

      else:

        return " "

    def get_index():

      response=session.get("https://www.zhihu.com",headers=header)

      with open("index_page.heml",wb) as f:

        f,write(response.text.encode("utf-8"))

      print ("ok")

    #模拟知乎登录

    def zhihu_login(account,password):

      if re.match("^1d{10}",account):  #验证账号是否为手机号

        print ("手机登录")

        post_url="https://www.zhihu.com/login/phone_num"

        post_data={

          "_xsrf"  :  get_xsrf(),

          "phone_num"  :  account,

          "password"  :  password

        }

      else:

        if "@" in account:

          print (“邮箱登录”)

          post_url="https://www.zhihu.com/login/email"

          post_data={

          "_xsrf"  :  get_xsrf(),

          "email"  :  account,

          "password"  :  password

        }

      response_text=session.post(post_url,post_data,headers=header)

      session.cookies.save()

    #验证是否登录成功

    def is_login():

      inbox_url="https://www.zhihu.com/inbox"

      response=session.get(inbox_url,headers=header,allow_redirects=False)

      if response.status_code !=200:

        return False

      else:

        return True

    zhihu.login("18782902568","admin123")

    get_index()

  • 相关阅读:
    Bellman_Ford算法详解
    数据结构实验之图论十:判断给定图是否存在合法拓扑序列(SDUT 2140)
    数据结构实验之图论九:最小生成树 (SDUT 2144)
    数据结构实验之图论七:驴友计划【迪杰斯特拉算法】(SDUT 3363)
    数据结构实验之图论六:村村通公路【Prim算法】(SDUT 3362)
    纯手工打造简单分布式爬虫(Python)
    “永恒之蓝"漏洞的紧急应对--毕业生必看
    从多项式相加看线性结构
    OD常用断点之CC断点
    打造“黑客“手机--Kali Nethunter
  • 原文地址:https://www.cnblogs.com/liujiacai/p/7418272.html
Copyright © 2011-2022 走看看