文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python模拟登录多种实现方式

2023-01-31 01:53

关注

Python模拟登录多种实现方式

基于Python 3.6


#coding:utf-8
import sys
import io
import urllib.request
import http.cookiejar



################## 第一种登陆方式 ##################
################## 直接使用已知的cookie访问 ##################

# #改变标准输出的默认编码
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
# #登录后才能访问的网站
# url = 'http://www.xxx.com.cn/member/index'

# #浏览器登录后得到的cookie,也就是刚才复制的字符串
# cookie_str = 'PHPSESSID=go07n3aart4qoflrfe0m3nod42'

# #构造登录请求
# request = urllib.request.Request(url)
# #设置cookie
# request.add_header('cookie', cookie_str)
# #设置请求头
# request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')
# # 请求页面
# response = urllib.request.urlopen(request)
# print(response.read().decode('utf-8'))




################## 第二种登陆方式 ##################
################## 模拟登录后再携带得到的cookie访问 ##################

# #改变标准输出的默认编码
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')


# # 登陆信息
# # 登录后才能访问的网站
# url = 'http://www.xxx.com.cn/member/index'
# login_url = "http://www.xxx.com.cn/login/quick_login"
# login_username = "xxx"
# login_password = "xxx"

# #登录时需要POST的数据
# login_data = {
#     "username" : login_username,
#     "password" : login_password
# }
# post_data = urllib.parse.urlencode(login_data).encode('utf-8')

# #设置请求头
# headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
# #构造登录请求
# req = urllib.request.Request(login_url, headers = headers, data = post_data)


# #构造cookie
# cookie = http.cookiejar.CookieJar()

# #由cookie构造opener
# opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))


# #发送登录请求,此后这个opener就携带了cookie,以证明自己登录过
# resp = opener.open(req)

# #构造访问请求
# req = urllib.request.Request(url, headers = headers)

# resp = opener.open(req)

# print(resp.read().decode('utf-8'))




################## 第三种登陆方式 ##################
################## 保存Cookie到文件 ##################

# #改变标准输出的默认编码
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

# # 登陆信息
# # 登录后才能访问的网站
# url = 'http://www.xxx.com.cn/member/index'
# login_url = "http://www.xxx.com.cn/login/quick_login"
# login_username = "xxx"
# login_password = "xxx"

# #登录时需要POST的数据
# login_data = {
#     "username" : login_username,
#     "password" : login_password
# }
# post_data = urllib.parse.urlencode(login_data).encode('utf-8')

# #设置请求头
# headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
# #构造登录请求
# req = urllib.request.Request(login_url, headers = headers, data = post_data)

# #设置保存cookie的文件,同级目录下的cookie.txt
# filename = 'cookie.txt'
# #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
# cookie = http.cookiejar.MozillaCookieJar(filename)

# #由cookie构造opener
# opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))


# #发送登录请求,此后这个opener就携带了cookie,以证明自己登录过
# resp = opener.open(req)
# #保存cookie到文件
# cookie.save(ignore_discard=True, ignore_expires=True)

# #构造访问请求
# req = urllib.request.Request(url, headers = headers)

# resp = opener.open(req)

# print(resp.read().decode('utf-8'))




################## 第四种登陆方式 ##################
################## 从文件中获取Cookie并访问 ##################

#改变标准输出的默认编码
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

# 登陆信息
# 登录后才能访问的网站
url = 'http://www.xxx.com.cn/member/index'

#设置请求头
headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
#构造登录请求
req = urllib.request.Request(url, headers = headers)

#设置保存cookie的文件的文件名,相对路径,也就是同级目录下
filename = 'cookie.txt'
#创建MozillaCookieJar实例对象
cookie = http.cookiejar.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load(filename, ignore_discard=True, ignore_expires=True)
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
handler = urllib.request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener = urllib.request.build_opener(handler)
#此用opener的open方法打开网页
response = opener.open(req)
#打印信息
print(response.read().decode('utf-8'))






阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯