为啥要写这一篇文章呢?
(主要是qq群内有人在模拟登陆知乎,一直不成功)然后我抓包看了下,发现知乎登陆页已经改版了,而且难度大大提高了。

开始抓包

首先内,还是打开知乎首页,然后输入账号密码,登陆(记得输错密码)

这样我们就可以看到请求头了(请求头如下)

我们发现有这几个请求头和正常的不一样(红色框中的)

  1. authorization (感觉应该是js生成的,后面再看
  2. Content-Type (后面多了boundary=xxx 这种,那这种是啥意思呢,后面和请求参数一起看
  3. cookie:这个要注意,登陆前cookie就不为空,说明之前肯定有set-cookie的操作
  4. x-udid,x-sxrftoken 这两个都是验证参数,估计都在网页源代码能找到

再看一下请求参数

可以看到参数是以payload的形式出现的

第一次看到这种的人估计会一脸懵逼

这个要结合请求中的

Content-Type:

multipart/form-data; boundary=----WebKitFormBoundary2KNsyxgtG28t93VF

来一起看

multipart/form-data 是一种表单提交的方式,后面的boundary=xxx 是表单分割的方式,那到底啥意思呢?看一个简单的小列子你就能明白啦

------WebKitFormBoundary2KNsyxgtG28t93VF 是分割不同参数的,所以可以直接不看他(这个是由上面的Content-Type后面的boundary决定的,可以随便修改)

那把分割线去掉后,上面的就相当于 client_id=c3cef7c66a1843f8b3a9e6a1e3160e20,

grant_type=password.

那么这个payload就很好理解了.

我们来看一下,一共有哪些参数

参数还挺多的,可以看到很多参数都是固定的,如账号,密码,时间戳,等等

变动的有两个 client_id,signature

开始找参数

authorization :

我们在chrome内,直接按ctrl+shift+f(全局搜索,搜索js,css这些),可以看到已经搜索到了,并且是直接写在js里面的,然后重新随便换个账号再抓一次包,发现authorization 的值还是固定的,所以说明authorization 是直接写在js里面的,不是动态修改的(那么authorization 的值我们就已经找到了)

cookie:

在登陆之前,就发现cookie的值不为空,说明肯定打开网页后就有set-cookie的操作了,我们想验证的话,先打开一个无痕浏览器(主要是为了把之前的cookie全部清空,避免干扰),然后打开http://zhihu.com,我们发现他有几次set-cookie的动作

那我们想要模拟的话,很简单的方法是直接使用requests.session

x-udid,x-sxrftoken:

一般这种验证参数都会在网页源代码里面,所以直接查看网页源代码

可以看到已经找到了,后续就是如何把这个找出来而已,可以使用正则,或者xpath定位到

client_id:

你会发现client_id与上面的authorization 一模一样

signature:

还是使用ctrl+shift+f 全局搜索

发现找到了,但是参数是js动态生成的...

主要是找到如何加密的,然后使用Python模拟出来

第一步:下载这个js,格式化(让代码好看一些)

第二步:使用fiddle替换掉原来的js,使用刚刚格式化的js

第三步:慢慢调试。。。直到找到如何生成的...

大概步骤是这样

但是假如你js像我一样很渣的话,你可以直接找到这段加密的js,然后Python执行这段js就可以了。。。

上面呢,我们把该找的参数都找到了,接着只要模拟发送就可以了

socket模拟http的登陆_python模拟登陆知乎(最新版)相关推荐

  1. python模拟购物车购物过程_Python 模拟购物车的实例讲解

    1.功能简介 此程序模拟用户登陆商城后购买商品操作.可实现用户登陆.商品购买.历史消费记查询.余额和消费信息更新等功能.首次登陆输入初始账户资金,后续登陆则从文件获取上次消费后的余额,每次购买商品后会 ...

  2. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

  3. python模拟登录163邮箱_python模拟登陆163邮箱并下载邮件内容(第三版代码片段)

    python模拟登陆163邮箱并下载邮件内容(第三版代码片段) 注意: 1 由于163邮箱有众多版本,所以登录请求URL,邮件URL等可能也不太一样,下面是163的简约3.0 2 代码缺乏错误处理能力 ...

  4. python模拟登录淘宝_Python模拟登陆淘宝示例源码

    [实例简介] [实例截图] [核心代码] # -*- coding: utf-8 -*- import requests import re class TaoBao: def __init__(se ...

  5. python模拟银行存取款_python 模拟银行转账功能过程详解

    首先画出流程图,流程图与现实代码有出入,因为刚开始画流程图的时候,有些东西没考虑进去,后来写着写着就慢慢能想起来并实现了. 另有一点经验推荐给新手朋友,如果说碰到一个项目无从下手的话,就先慢慢去写,写 ...

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

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

  7. python模拟键盘输入密码栏_python模拟键盘输入 切换键盘布局过程解析

    PostMessage() def keyHwnd(hwndEx, char): """ 向指定控件输入值 :param hwndEx: 控件句柄 :param char ...

  8. python模拟屏幕点击_python模拟鼠标点击教程

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  pywin32 pip install  pyHook?1.5.1?cp37?cp37 ...

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

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

最新文章

  1. LeetCode 468. Validate IP Address--笔试题--Python解法
  2. 培养积极状态的八个方法
  3. python3 多线程_python3多线程知识点总结
  4. Java笔记:与系统交互、系统相关的类,Object类
  5. 【算法竞赛学习】金融风控之贷款违约预测-赛题理解
  6. c语言程序设计王新萍课后答案,C语言程序设计教程
  7. .NET Core 如何禁止.resx文件自动生成Designer.cs
  8. OpenCV Mat的数据类型
  9. 前端学习(2135):ES模块化的导出和导入
  10. 12) 十分钟学会android--APP通信传递消息之简单数据传输
  11. 数据结构思维 第十四章 持久化
  12. python打印字符串的前五行_python基础-字符串(6)
  13. vivado快速下载及解压安装教程
  14. 1194. 24点游戏
  15. beaker-用于会话和缓存的WSGI中间件
  16. mysql远程操作权限(navicat for mysql)
  17. 去除ueditor自动默认添加p标签
  18. 【春招实习】贝壳金服电话一面
  19. Workspace Cannot Be Created
  20. 谁将成为“中国FedEx”?

热门文章

  1. spring boot+thmyleaf ModelAndView页面传值
  2. android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...
  3. python mysql操作封装库_python封装mysq操作,进行数据库的增删改
  4. 【重版】朴素贝叶斯与拣鱼的故事
  5. python的环境变量设置
  6. Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度
  7. Python+Selenium基础篇之2-打开和关闭火狐浏览器
  8. java EL表达式中${param.name}详细
  9. mybatis大于小于的转义
  10. flex和js进行参数传递