python requests模拟登陆带验证码的网站

news/2024/5/20 23:01:29/文章来源:https://blog.csdn.net/will4906/article/details/77124615

作为之前专利爬虫的续篇,本篇准备描述如何通过python的requests模块登录专利查询网站。

环境准备

  • python 3.6
  • requests

chrome尝试

首先,我们使用chrome尝试登录专利网站,并通过network分析各个请求的相关信息。
这里写图片描述

Network

通过分析network,我们可以看到,一次登录操作,有以上相关请求。特别注意的是,以为登录成功后页面会刷新,我们需要将Network工具栏上的Preserve log勾选上,才能保证network不被刷新掉。

由此我们可以发现,checkLoginTimes-check.shtml和wee_security_check这两次请求像是发送登录校验请求。

经过比对后我们发现wee_security_check才是想要的结果。

这里写图片描述
注:以上图片中,笔者账号密码是瞎填的,但是j_username和j_password显示的内容和笔者写的内容不一致,是因为网站在前端使用了Base64进行加密,这一点笔者是从网站发送的请求中有base64.js这个文件发现的,于是尝试过后确实是base64加密。

cookies

查看cookies

做过web的朋友可能知道,账号密码验证码登录的时候,经常会使用cookie作为同一用户的标志。于是我们查看一下刚才请求的cookies。
这里写图片描述

为什么要cookies

经验较少的朋友可能乍一看会以为IS_LOGIN是cookies的关键,其实不然。
我们先要简单了解一下cookies是个啥东西,有经验的朋友可以略过。

“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。(百度百科)

我们知道登录有个麻烦事就是验证码,这个对于后台来说其实也是个小麻烦,请求大家都发,后台怎么知道哪个验证码对应哪个浏览器发的请求?答案就是通过cookies。前端请求验证码的时候后台先用Set-Cookie的 response header将一个标识符带个前端浏览器,浏览器储存后下次发送登录请求的时候带上之前后台发过来的cookies,后台就知道是对应验证码的结果对不对了。

明确cookie

那么哪个cookie是我们需要的呢,我可以说通过肉眼观察得知吗~WEE_SID就是我们想要的cookie。好吧,管他是哪个呢,不管三七二十一全部带上就好了。。。。。

开发

requests发送管理cookie有两种方式,一种是手动携带,放在get,post等请求的参数带上去即可。另一种使用requests.Session()自动管理cookies,我们不需要操心。但是第二种笔者测试完之后发现好像只有一个cookie的情况下是正常的,当有多个cookie的情况。比如说这个网站,就不行了。不知道是什么原因,如有知道的朋友请告知。
这里我们就只介绍第一种方式。

登录流程

  • 第一步获取验证码和相应cookies,
    验证码的地址通过观察network获得,这里不再赘述。
codeurl = 'http://www.pss-system.gov.cn/sipopublicsearch/portal/login-showPic.shtml'
valcode = requests.get(codeurl)

此处cookies已经保存在valcode.cookies中,接下来我们需要将valcode保存为图片。

    f = open('valcode.png', 'wb')# 将response的二进制内容写入到文件中f.write(valcode.content)# 关闭文件流对象f.close()

保存图片之后,鉴于技术问题暂时还没有做机器识别,只能用人眼识别了。得知验证码结果后我们Input进来。

    code = input('请输入验证码:')data["j_validation_code"] = str(code)
  • 第二步发送登录请求
    通过观察network我们发现登录请求所带的参数格式如下:
data = {"j_loginsuccess_url": "","j_validation_code": "","j_username": base64Name,"j_password": base64Pass}

这里用户名和密码已经通过base64加密,python中有现成的base64解码编码模块,直接import进来用就可以,笔者不再赘述。

checkUrl = 'http://www.pss-system.gov.cn/sipopublicsearch/wee/platform/wee_security_check'
resp = requests.post(checkUrl, headers = checkHeader, cookies = requests.utils.dict_from_cookiejar(valcode.cookies), data=data)

发送过后,我们可以从结果看到已经登录成功。
这里写图片描述

代码资源:http://download.csdn.net/download/will4906/9930924

赞赏
微信支付 支付宝
微信支付宝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_884637.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Microsoft Visual studio Ultimate 2012中安装配置Python 2.7和Diango1.5.1,并新建第一个网站

1.下载Python。 下载地址:https://www.python.org/downloads/windows/ 我的电脑是Windows 7 64位的操作系统,所以下载的是python-2.7.11.msi,下载步骤如下图: 其中,VS 2012对python的安装文件没有要求…

基于KNN算法的约会网站配对效果 python3.2

续前文 Python3.2 实现基于KNN算法的数据分类 。今天看完了《机器学习实战》中关于KNN算法的一个完整案例,将所有代码加了注释,并利用tkinter 将其改造为GUI式的交互界面。(文中没有直接作用的方法我已经注释) from numpy impor…

app和wap手机网站的区别在那里

app在大行其道的情况下,本人来发表关于app和手机wap网站的几个观点,希望对各位同仁有参考价值: 第一点 我们从依附的平台来看: 移动Wap网站:由移动设备的浏览器来支持,只要移动设备支持上网浏览网站基本上可…

Java Web学习十七:网站用户注册登录;预约信息

Java Web学习十七:网站用户注册&登录;预约信息 一:案例任务二:准备阶段三:代码分析与展示1.工具类的代码分析:2.注册功能代码分析 刚刚学习初期,我们写了网站用户的注册以及登录功能&#x…

黄阶中级-《大型网站技术架构》- 概述 - 修改0次

1、大型网站架构演化 互联网站的发展仅仅经历了 20 多年的时间。 大型网站软件系统的特点: 高并发、高流量。谷歌日均 PV 几十亿。 PV (访问量):即 Page View , 即页面浏览量或点击量,用户每次刷新即被计算一次高可用。百度被黑就会成为热…

GCP搭建网站后403解决

由于开发需要,在本地用虚拟机配置了LNMP环境,使用的是Centos 6.8的yum安装,安装一切正常,但是使用默认的网站配置目录,是在/usr/share/nginx/html这个目录下。简直是有点奇葩了。 于是乎,我先将默认的配置…

【iPhone】网络编程–一起来做网站客户端(一)

http://www.pan-apps.com/?p281 最近几天,一直在学习网络编程方面,我觉得这是移动开发必须了解的知识吧 在实践中学习,才是最好的方法 于是就决定为公司OA系统做一个iphone客户端,但是前提是这个系统没有提供任何API,所以只能悲剧…

编程要趁早 BI推荐8个编程学习网站

http://www.cocoachina.com/applenews/devnews/2013/0329/5914.html 最近一个热门话题是雅虎以3000万美元收购了移动阅读应用Summly,真正让人吃惊的不是3000万美元的价格值不值,而是Summly的开发者--只有17岁的尼克达洛伊西奥。他12岁开始学习编程&#…

自动为 Gatsby网站中的 Markdown 页面添加 sidebar

0 简介 我想在Gatsby网站上创建Markdown页面时自动添加侧边栏。 有一个 starter “ gatsby-gitbook-starter” 可以支持markdown文件的侧边栏,但仅支持1级。 我希望能够支持更多级别。 你可以通过下面的命令安装这个starter。 gatsby new gatsby-gitbook-starter…

如何在标题栏title前添加网站logo?

第一种方法&#xff1a;据说在网站根目录下放着我们的ico型logo&#xff0c;命名为favicon.ico&#xff0c;浏览器会自动去找到并显示。试了试&#xff0c;在firefox23和ie8下都没有成功。 第二种方法&#xff1a;添加代码&#xff0c;如下&#xff1a; 1 <link rel"sh…

阿里云域名解析完成后仍然无法通过域名正常访问网站

通过阿里云进行域名解析后&#xff0c;仍然无法正常访问网站的解释&#xff0c;与解决办法 1、域名解析完成后&#xff0c;未在主机管理页面进行域名绑定。 域名绑定流程&#xff1a; 进入阿里云虚拟主机页面&#xff0c;找到相应的虚拟主机&#xff0c;点击后面的管理。 点击…

web页面性能优化以及SEO

前言&#xff1a; 在同样的网络环境下&#xff0c;两个同样能满足你的需求的网站&#xff0c;一个“Duang”的一下就加载出来了&#xff0c;一个纠结了半天才出来&#xff0c;你会选择哪个&#xff1f;研究表明&#xff1a;用户最满意的打开网页时间是2-5秒&#xff0c;如果等…

wordpress建站优化技巧

wordpress是一款开源的PHP博客程序&#xff0c;可以有大量的开源主题与插件&#xff0c;使用液非常简单&#xff0c;wordpress在全球范围应用都十分广泛&#xff0c;根据Pingdom.com最近发布的一份数据&#xff0c;2013年在Technorati排名前100的博客&#xff08;Technorati为一…

个人网站添加百度统计

网站如何添加百度统计&#xff1f; 上线网站后&#xff0c;需要进行网站的维护和及时观察网站的流量等方面去了解自己的网站&#xff0c;百度统计工具可以查看多少访客访问了网站&#xff0c;以及分析流量来源等情况。那应该如何为网站添加百度统计工具呢&#xff1f; 1、注册…

[转]50个c/c++源代码网站

[转]50个c/c源代码网站 Posted on 2010-03-05 14:59 feisky 阅读(1182) 评论(2) 编辑 收藏 所属分类: C/C C/C是最主要的编程语言。这里列出了50名优秀网站和网页清单&#xff0c;这些网站提供c/c源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C…

32个不应该做的JOOMLA SEO优化手法

32个不应该做的JOOMLA SEO优化手法 隐藏元件的方式有很多&#xff0c;這也是最常被誤用的SEO手法&#xff0c;但也是Google抓最兇的部分&#xff0c;所以你要避免&#xff1a; 1. 在白背景上使用白色文字 2. 藏字在圖的下方 3. 利用CSS隐藏文字 4. 用小字來建立鏈接以及增加…

Win7部署asp.net网站问题---HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败...

在IIS上部署网站时遇到这样一个问题&#xff1a;“ HTTP 错误 500.0 - Internal Server Error调用 LoadLibraryEx 失败&#xff0c;在 ISAPI 筛选器 "C:\Program Files (x86)\Sybase\PowerDynamo\win32\dyisa03.dll" 上”。 具体的问题展示如图&#xff1a; 通过网络…

高效在线抠图网站

介绍几款高效的抠图网站&#xff0c;给那些不想动手的。 1、怪兽抠图 链接: https://818ps.com/koutu/ 这是一个国内的站点&#xff0c;抠图后的图片不需要登录就能下载。 点击 上传图片 上传你需要抠图的素材。 用蓝色画出想保留的区域 用红色画出想要抠除的区域 - 简单…

VS2013 发布网站时文件丢失解决办法

网站发布时&#xff0c;发现一些模板文件没有复制到文件夹中解决办法&#xff1a;选择文件打开属性窗口找到生成操作&#xff0c;选项选择“内容”&#xff0c;然后重新发布 转载于:https://www.cnblogs.com/linyongqin/articles/6393166.html

常用网站链接

IEEE802标准下载 Browse Standards | Get Program | IEEE Xplorehttps://ieeexplore.ieee.org/browse/standards/get-program/page/series?id68