用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)

 

 

 

posted @ 2019-04-21 16:22  蓝银花  阅读(6088)  评论(0编辑  收藏  举报
Live2D