python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

我是从这篇博客中(https://blog.csdn.net/zwq912318834/article/details/79571110)了解的一点基础东西,代码都是从这篇博客里面的源代码直接复制过去测试和学习的。

遇到的问题:

1、返回状态码:502——百度得知这是一个反爬虫的状态码,原博主是写于2018年3月份,我测试是在2020年2月份,说明马蜂窝已经做了反爬虫的策略,由于自己这方面不够火候,没有继续追究,因此继续测试和学习其他的东西

2、博客里面的几个链接是怎么获得的?

  • https://passport.mafengwo.cn/login/————这个链接,博客里面开始就写的很明白了
  • http://www.mafengwo.cn/plan/route.php————这个链接是登录成功后才能打开的其中一个页面,自己可以选择页面,页面的链接就从地址栏获得,是为了测试爬虫程序模拟登录的时候是否成功的,如果说程序请求这个页面返回状态码200,则成功,否则失败
  • http://www.mafengwo.cn/plan/fav_type.php————这个链接登录成功后的跳转链接,即当已经登录过,有cookies的时候,就可以直接打开,目的是程序中获得的cookies还有效,返回状态码200,即模拟登录成功

3、cookies是怎么获得和保存的?火候不够,主要百度了这个对象而了解一二:

cookielib.LWPCookieJar(filename = "mafengwoCookies.txt"),这段程序是把cookies保存到项目目录下,名字叫mafengwoCookies的文件

4、cookies怎么获得和保存?程序如下图位置

5、原博主的最终程序有个小bug,当删除了这个cookies文件后,运行博主的最终程序会报错

原因是入口程序的逻辑问题

原入口程序

if __name__ == "__main__":# 第一步:尝试使用已有的cookie登录mafengwoSession.cookies.load()isLogin = isLoginStatus()print(f"is login mafengwo = {isLogin}")if isLogin == False:# 第二步:如果cookie已经失效了,那就尝试用帐号登录print(f"cookie失效,用户重新登录...")mafengwoLogin("13798233592", "Aa1111111")resp = mafengwoSession.get("http://www.mafengwo.cn/plan/fav_type.php", headers = header, allow_redirects = False)print(f"resp.status = {resp.status_code}")

修改后的入口程序

if __name__ == "__main__":# 第一步:尝试使用已有的cookie登录try:mafengwoSession.cookies.load()except:print(f"本地没有cookies文件,重新获取中...")isLogin = isLoginStatus()print(f"is login mafengwo = {isLogin}")if isLogin == False:# 第二步:如果cookie已经失效了,那就尝试用帐号登录print(f"cookie失效,用户重新登录...")mafengwoLogin("13798233592", "Aa1111111")resp = mafengwoSession.get("http://www.mafengwo.cn/plan/fav_type.php", headers = header, allow_redirects = False)print(f"resp.status = {resp.status_code}")

至此,Python利用requests模块模拟登录测试完成,获得了一点基础入门的小知识吧

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

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

相关文章

ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)

Now you have a string consists of uppercase letters, two integers AA and BB. We call a substring wonderful substring when the times it appears in that string is between AA and BB (A \le times \le BA≤times≤B). Can you calculate the number of wonderful sub…

[css] css的height:100%和height:inherit之间有什么区别呢?

[css] css的height:100%和height:inherit之间有什么区别呢? 上周在微博上无节操吐槽了下inherit的段子,没想到回声还不少: 微博inherit无节操段子 不过inherit确实是个好东西,不仅节约代码,尤其与background之流打交…

http详解 请求报文格式和响应报文格式

题外话: 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 HTTP 工作原理 超文本传输协议(Hypertext Transfer Protocol,简称HTT…

【LeetCode】拓扑排序

【207】 Course Schedule 排课问题&#xff0c;n门课排课&#xff0c;有的课程必须在另外一些课程之前上&#xff0c;问能不能排出来顺序。 题解&#xff1a;裸的拓扑排序。参考代码见算法竞赛入门指南这本书。 1 class Solution {2 public:3 bool dfs(const vector<vec…

pycharm中更新pip版本的问题

经常使用Python的都知道pip&#xff0c;但有时候&#xff0c;下载某个模块不成功&#xff0c;提示信息如下 pytharm查看自带的pip版本 解决方式一&#xff1a; pytharm的terminal里卸载pip再安装pip 如果还不行&#xff0c;解决方式二 去你当前的项目路径下找到lib文件夹下的…

小程序的wx.onAccelerometerChange

https://www.2cto.com/kf/201802/724174.html&#xff08;copy&#xff09; 也许有人会问&#xff0c;小程序中都是竖直app形态&#xff0c;要横竖屏判断有什么用?即使判断出了横屏状态&#xff0c;你能把小程序横过来?答案是不能的&#xff0c;但是判断当前设备处于横屏或者…

Django通过中间件实现登录验证demo

前提&#xff1a;中间件版的登录验证需要依靠session&#xff0c;所以数据库中要有django_session表。 1 from django.conf.urls import url2 from django.contrib import admin3 from app01 import views4 5 urlpatterns [6 url(r^admin/, admin.site.urls),7 url(r^…

Python爬虫自学之第(③)篇——实战:requests+BeautifulSoup实现静态爬取

题外话&#xff1a; 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人&#xff0c;信不信未来的PI&#xff0c;了解一下&#xff0c;唯一一个高度与之持平的项目 前篇全片都是生硬的理论使用&#xff0c;今天就放个静态爬取的实例让大家体验一下B…

Python爬虫自学之第(④)篇——强大的正则表达式,re模块

题外话&#xff1a; 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人&#xff0c;信不信未来的PI&#xff0c;了解一下&#xff0c;唯一一个高度与之持平的项目 如果把BeautifulSopu比喻成通过线索一步步接近目标的侦探的话&#xff0c;那么正则…

Python爬虫自学之第(⑤)篇——爬取某宝商品信息

题外话&#xff1a; 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人&#xff0c;信不信未来的PI&#xff0c;了解一下&#xff0c;唯一一个高度与之持平的项目 能看到这里说明快进入动态网页爬取了&#xff0c;在这之前还有一两个知识点要了解&…

Vue通信、传值的多种方式,详解

Vue通信、传值的多种方式&#xff0c;详解 转自&#xff1a;https://blog.csdn.net/qq_35430000/article/details/79291287 一、通过路由带参数进行传值 ①两个组件 A和B,A组件通过query把orderId传递给B组件&#xff08;触发事件可以是点击事件、钩子函数等&#xff09; this.…

python 文件读写(追加、覆盖)

很明了的一个常用参数图标&#xff1a; 更像细的一个参数说明&#xff1a; 由于文件读写时都有可能产生IOError&#xff0c;一旦出错&#xff0c;后面的f.close()就不会调用。所以&#xff0c;为了保证无论是否出错都能正确地关闭文件&#xff0c;我们可以使用try ... finally来…

前端知识点总结

1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动。(通俗易懂的来讲讲DOM、两个节点之间可能存在哪些关系以及如何在节点之间任意移动) DOM: Document Object Module, 文档对象模型。 节点的关系:父(parent)、子(child)和同胞(sibling)等节…

Python爬虫自学之第(①)篇——爬虫伪装和反“反爬”

有些网站是防爬虫的。其实事实是&#xff0c;凡是有一定规模的网站&#xff0c;大公司的网站&#xff0c;或是盈利性质比较强的网站&#xff0c;都是有高级的防爬措施的。总的来说有两种反爬策略&#xff0c;要么验证身份&#xff0c;把虫子踩死在门口&#xff1b;要么在网站植…

Spring 事务相关及@Transactional的使用建议

使用步骤&#xff1a; 步骤一、在spring配置文件中引入<tx:>命名空间<beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:tx"http://www.springframework.org/schema/…

谷歌浏览器安装Vue Devtools插件(国内的谷歌浏览器如何安装插件)

分享给大家一个谷歌插件网站&#xff0c;适合国内谷歌浏览器无法安装插件的问题&#xff0c;你懂的 点击这里下载Vue.js Devtools插件&#xff0c; 喜欢的可以收藏这个插件资源网站&#xff0c;分享给大家 第一步&#xff1a;下载后解压获得CRX文件&#xff0c;如下图 第二步…

MySQL操作权限整理

用户权限管理主要有以下作用&#xff1a; 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户 一、用户授权 mysql> grant a…

vue报错 TypeError: merge is not a function

利用ncu -u升级去年的vue项目package.json里的所有依赖&#xff0c;目的是想增删改它去做另一个项目&#xff0c; 却发生了这样一个错误&#xff1a;&#xff08;如下&#xff09; 查找问题原因&#xff1a; 这是webpack配置中区分环境配置文件中的插件webpack-merge的报错&a…

Invalid options object. Copy Plugin has been initialized using an options object that does not match

报错&#xff1a; 报错文件和代码&#xff1a;查看了官网也没有看出所以然&#xff0c;最后在npm官网上找打了原因 错误配置&#xff1a; 怎么看都没有错误 最后参看一下这个npn官网找打了原因&#xff0c;地址&#xff1a;https://www.npmjs.com/package/copy-webpack-plugin …

后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column

今天基于这个问题纠结了一下午&#xff0c;导致这个问题的坑也是挺深的&#xff0c;查找问题最好是从这条数据的存储开始查找 问题1&#xff1a;先确定后台接收数据后存储到数据库里有没有自动转义特殊字符&#xff0c;比如 原始数据是&#xff1a;[{"user_id":20,…