• 用python代码模拟登录网站


    方法一:直接使用已知的cookie访问

    特点:

      简单,但需要先在浏览器登录

    具体步骤:

    1.用浏览器登录,获取浏览器里的cookie字符串

      先使用浏览器登录。再打开开发者工具,转到network选项卡。在左边的Name一栏找到当前的网址,选择右边的Headers选项卡,查看Request Headers,这里包含了该网站颁发给浏览器的cookie。对,就是后面的字符串。把它复制下来,一会儿代码里要用到。

      注意,最好是在运行你的程序前再登录。如果太早登录,或是把浏览器关了,很可能复制的那个cookie就过期无效了。

    urllib库的版本代码

     1 """
     2 直接获取 个人中心的页面
     3 手动粘贴 辅助 pc 抓包的 cookies
     4 放在 request对象的请求头里面
     5 """
     6 
     7 import urllib.request
     8 
     9 #1 数据url
    10 url = "https://www.yaozh.com/member/"
    11 #2 添加请求头
    12 headers = {
    13     "User-Agent":" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"
    14 ,"Cookie":"acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; PHPSESSID=1rhel4pftt6lbmc6bhtkpjn7u4; yaozh_logintime=1555822916; yaozh_user=734735%09huazaid; yaozh_userId=734735; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0; yaozh_uidhas=1; yaozh_mylogin=1555822922; acw_tc=2f624a7515558225995774143e31e6ef327f4bf5a2beec95289a6d4258f121; MEIQIA_VISIT_ID=1KA8DcXDfMW6WEeGhLuPgn9T0p0"
    15 }
    16 #3 构建请求对象
    17 request = urllib.request.Request(url,headers=headers)
    18 #4 发送请求对象
    19 response = urllib.request.urlopen(request)
    20 
    21 #5 读取数据
    22 data = response.read()
    23 #保存到文件中,验证数据
    24 with open("01cook.html","wb")as f:
    25     f.write(data)

    方法二:直接使用账号密码登录访问

    退出登录,按F12 ,再登录,抓取数据

    formhash和backurl要在登陆之前找




    代码
     1 """
     2   获取 个人中心的页面
     3   1.代码登录  登录成功 cookie(有效)
     4   2. 自动带着cookie 去请求个人中心
     5 
     6   cookiejar  自动保存这个cookie
     7 """
     8 import urllib.request          #请求库
     9 from http import cookiejar    #保存cookie用的
    10 from urllib import parse   #转译
    11 #登录之前的, 登录页的网址https://www.yaozh.com/login
    12 #找登录参数
    13 
    14 #后台 根据你发送的请求方式来判断的 如果你是get(登录页面),如果POST(登录结果)
    15 #1.代码登录
    16     # 1.1 登录的网址
    17 login_url = "https://www.yaozh.com/login"
    18 
    19 
    20     #1.2 登录的参数
    21 login_form_data = {
    22     "username": "用户",
    23     "pwd": "密码",
    24     "formhash": "E2F4BF731C",
    25     "backurl": "https%3A%2F%2Fwww.yaozh.com%2F",
    26 
    27 }
    28  #1.3 发送登录请求POST
    29 cook_jar = cookiejar.CookieJar()
    30 #定义有添加 cook 功能的 处理器
    31 cook_hanlder = urllib.request.HTTPCookieProcessor(cook_jar)
    32 #根据处理器 生成 opener
    33 opener = urllib.request.build_opener(cook_hanlder)
    34 
    35 #带着参数 发送post请求
    36 #添加请求头
    37 headers = {
    38     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400"}
    39 #1 参数 将来 需要转译 转码; 2 post 请求的 data 要求是bytes
    40 login_str = parse.urlencode(login_form_data).encode('utf-8')
    41 login_request = urllib.request.Request(login_url,headers=headers,data=login_str)
    42 #如果登录成功,cookjar自动保存cookie
    43 opener.open(login_request)
    44 
    45 # 2 代码带着cookie去访问 个人中心
    46 center_url = "https://www.yaozh.com/member/"
    47 center_request = urllib.request.Request(center_url,headers=headers)
    48 response = opener.open(center_url)
    49 #bytes -->str
    50 data = response.read().decode()
    51 
    52 with open("02cook.html","w",encoding="utf-8")as f:
    53     f.write(data)
    
    
    
     
  • 相关阅读:
    从虚拟地址,到物理地址(开PAE)
    无LoadLibrary获取指定模块基址
    练习
    Centos安装Python3及设置对应版本pip
    Varnish安装使用(初学)
    luogu P2463 [SDOI2008]Sandy的卡片 |二分+hash
    luogu P2852 [USACO06DEC]牛奶模式Milk Patterns |二分+hash
    luogu P4051 [JSOI2007]字符加密 |后缀数组(SA)
    弦图 学习笔记&
    luogu P1600 天天爱跑步 |树上差分+LCA
  • 原文地址:https://www.cnblogs.com/lanyincao/p/10745474.html
Copyright © 2020-2023  润新知