zoukankan      html  css  js  c++  java
  • 用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)
    
    
    
     
  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/lanyincao/p/10745474.html
Copyright © 2011-2022 走看看