使用python模拟登录

  • 运行环境
  • 步骤
    • 浏览器阶段
    • 思路
    • 编码
  • 使用Java模拟登录

该方法是一个比较麻烦的方法,但是它不需要浏览器的配合,适合爬虫之类。
而另一种,使用webdriver的,使用比这个简单,可以用来做每日签到、打卡之类,使用python + 相关浏览器的webdriver驱动浏览器进行操作。

运行环境

本次开发在Windos和Linux上均成功,运行环境为:
Linux:python 3.7.2
Windows:python 3.7.1

注意,在Linux下make install时候,一定要提前安装好ssl、zlib等,前者使得python支持https,后者保证能顺利安装。别忘了gcc也要提前安装。
以上两个问题可能的解决方案:

yum install openssl-devel
yum install zlib*

步骤

浏览器阶段

本次模拟网站:https://www.bbaaz.com
其登录界面网址为:https://www.bbaaz.com/member.php?mod=logging&action=login

先使用浏览器打开,输入用户名、密码,然后F12打开Dev Tools,选择Network选项卡,注意勾选Preserve log,不然可能的情况是,你点了登录,由于package太多的原因,或者跳转新页面,关键的包已经舍弃掉了。
找到关键包,如下图,可以看到很多信息。


从package中可以获取到:

Request URL: https://www.bbaaz.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Lm0Hi&inajax=1Set-Cookie:xxxxxForm Data
formhash: xxxxx
referer: https://www.bbaaz.com/
loginfield: username
username: xxxxx
password: xxxxx
questionid: 0
answer:

仔细观察,发现了什么,首先,Request URL带有了一个loginhash,再Form Data中带有了formhash,这些应该是防止非法登录的,那么这些数据哪里来的呢?经过注销,重新打开登陆界面,分析登录界面,可以得知这些信息,都是原登录界面的隐藏信息。

思路

那么我们的思路就是,首先,打开登录界面,从登录界面获取两个Hash值,再打开一个能存放Cookie的Request,给登录URL发送表单,记录返回的Cookie,再打开别的页面的时候,就可以通过Cookie进行访问。

编码

import urllib.request
import http.cookiejarform = {'formhash': '','referer': 'https://www.bbaaz.com/','loginfield': 'username','username': 'xxxxx','password': 'xxxxx','questionid': '0','answer': ''}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3562.0 Safari/537.36'}
loginURL = "https://www.bbaaz.com/member.php?mod=logging&action=login"
query = "&loginsubmit=yes&frommessage&loginhash=xxx&inajax=1""""为什么刚开始就直接使用带Cookie的opener呢,经过测试,在打开登录界面的时候,服务器就会向客户端发送3个Cookie,这些Cookie同样有验证作用,如果不带上,那么登录的时候,服务器会返回,含有非法字符,无法登录"""
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))req = urllib.request.Request(loginURL, headers = headers)
resp = opener.open(req)
s = resp.read().decode('utf-8')#获取登录界面的Hash值
s = s.split('<form method=\"post\"', 1)[1].split('name=\"formhash\" value=\"', 1)
suffix = s[0].split("loginform_", 1)[1].split("\"", 1)[0]
formhash = s[1].split("\" />", 1)[0]
query = query.replace('xxx', suffix)
form['formhash'] = formhash
post_form = urllib.parse.urlencode(form).encode('UTF-8')req = urllib.request.Request(loginURL + query, headers = headers, data = post_form)
opener.open(req)#你要访问的网页
req = urllib.request.Request(form['referer'], headers = headers)
resp = opener.open(req)
s = resp.read().decode('UTF-8')

经测试,使用该方法,成功模拟登录。

使用Java模拟登录

https://blog.csdn.net/yancr/article/details/88762380

使用python模拟登录相关推荐

  1. header python 环境信息_【关于header信息的构造】Python模拟登录出现乱码

    使用Python模拟登录Z-Blog系统的后台时,如果构造的header信息如下,那么得到的结果将会乱码,如下图所示 对应的错误的header信息如下: url = "http://192. ...

  2. 2019年最新 Python 模拟登录知乎 支持验证码

    2019年最新 Python 模拟登录知乎 支持验证码和保存 Cookies 知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包 ...

  3. Python模拟登录某橙色软件并获取所有订单,康康买了啥奇奇怪怪的东西?

    温馨提示 现在宝换成了滑块验证了, 比较难解决这个问题,以下的代码没法用了, 仅作学习参考研究之用吧. 本篇内容 python模拟登录宝网页 获取登录用户的所有订单详情 学会应对出现验证码的情况 体会 ...

  4. python模拟登录网易邮箱

    python模拟登录网易邮箱 #coding:utf-8 import urllib2,urllib import cookielib from bs4 import BeautifulSoup#设置 ...

  5. python模拟登录详细教程_Python模拟登录requests.Session应用详解

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  6. python模拟登录163邮箱_python模拟登录网易邮箱-阿里云开发者社区

    python模拟登录网易邮箱 #coding:utf-8 import urllib2,urllib import cookielib from bs4 import BeautifulSoup #设 ...

  7. Python学习教程:用Python模拟登录淘宝

    今天跟大家出的Python学习教程,Python模拟登录淘宝,我知道,肯定是吸引了你,一起来看看吧! 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录 ...

  8. python模拟登录网站_Python模拟登录淘宝都实现了,你还怕模拟登录?

    文章转载自公众号 :裸睡的猪 , 作者 猪哥66 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟登录淘宝,但是 ...

  9. python模拟登录网站(带图形验证码)

    往期回顾:上一次说了 python模拟登录不带验证码的网站,现在来说说如果带验证码的网站怎么办 验证码也是一种反爬机制,如果登陆地方存在验证码我们有两种思路对验证码进行识别 肉眼识别,即我们将验证码下 ...

最新文章

  1. Linux下更改系统时区及时间
  2. Android之自定义横向滚动菜单
  3. POPTEST老李谈JVM、JRE、JDK、java ee sdk with jdk区别
  4. centos7 python3安装numpy_centos 7 下安装numpy、scipy等python包
  5. 843. n-皇后问题
  6. android开发隐藏软键盘,Android开发之完全隐藏软键盘的方法
  7. Coursera机器学习编程作业Python实现(Andrew Ng)—— 2.1 Logistic Regression
  8. Spring依赖注入的模式和类型
  9. erlang四大behaviour简述
  10. github竟然挂掉?那么多顶级牛人……
  11. 访问无偏移的谷歌地图——工具篇
  12. Chrome浏览器中比较实用的一些插件(文字复制、广告拦截、视频倍速、文献下载)
  13. 系统发育树的美化~Figtree(图文教程)
  14. 【网络安全架构】互联网正对中国社会、经济、文化等各个领域产生巨大影响
  15. Java项目:赛事打分系统(java+SSM+Layui+Maven+mysql)
  16. 天猫精灵智能设备对接(2)
  17. 华为nova7se乐活版支持鸿蒙,华为nova7se乐活版和nova8se的详细对比参数对比
  18. android listview网络图片,Android ListView从网络获取图片及文字显示
  19. Vue国际化处理 vue-i18n 以及项目自动切换中英文
  20. 拉里·埃里森和历史上最牛的演讲【转】

热门文章

  1. WSE(Web Services Enhancements)
  2. 某品牌电商促销活动运营分析
  3. 照片删除了怎么恢复?4个方案,这才是官方指南
  4. rhinopython批量添加图层
  5. heckman两阶段的stata命令
  6. win10关机后cpu风扇还在转_win10系统电脑关机后风扇还转如何解决
  7. 股票量化投资出现的主要原因分析
  8. 利用正则表达式计算含有中文的字符串长度
  9. iPhone手机屏幕还能这样唤醒,怪不得别人的手机这么好用,学到了
  10. 【华为OD机试真题 python】篮球比赛 【2022 Q4 | 100分】