python模拟登陆知乎(最新版)

引言

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

开始抓包

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

这样我们就可以看到请求头了(请求头如下)
在这里插入图片描述

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

  • authorization (感觉应该是js生成的,后面再看
  • Content-Type (后面多了boundary=xxx 这种,那这种是啥意思呢,后面和请求参数一起看
  • cookie:这个要注意,登陆前cookie就不为空,说明之前肯定有set-cookie的操作
  • 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就可以了。。。

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

知乎转载地址:python模拟登陆知乎(最新版)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 模拟登录知乎涉及到网页自动化操作,通常利用如 Selenium 这样的库完成。下面是一个基本的步骤概览以及简化的示例代码说明如何通过 Python 和 Selenium 来模拟登录知乎。 ### 步骤概述 1. **安装所需库**:首先需要安装 `selenium` 库,通常使用的是其对应的浏览器驱动,例如对于 Chrome 浏览器可以安装 `webdriver_manager` 来自动下载并管理 WebDriver 执行文件。 2. **配置浏览器驱动**:设置好浏览器路径或者让系统自动下载驱动。 3. **打开浏览器并导航**:使用 Selenium 控制浏览器打开页面,并定位到知乎登录界面。 4. **填写表单**:找到输入用户名、密码的元素,输入相应信息。 5. **提交登录请求**:触发登录请求,可能还需要处理验证码等额外验证环节。 6. **获取登录后的状态**:检查是否成功登录,并根据需要进一步操作。 ### 示例代码 ```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.keys import Keys # 配置浏览器驱动路径或使用系统默认 driver = webdriver.Chrome(ChromeDriverManager().install()) try: # 访问知乎网站 driver.get("https://www.zhihu.com") # 寻找登录按钮并点击 login_button = driver.find_element_by_link_text('登录') login_button.click() # 寻找用户名输入框并输入 username_input = driver.find_element_by_name('username') username_input.send_keys('your_username') # 寻找密码输入框并输入 password_input = driver.find_element_by_name('password') password_input.send_keys('your_password') # 提交登录表单 password_input.submit() # 等待页面加载确认登录成功 assert "个人中心" in driver.page_source finally: # 关闭浏览器窗口 driver.quit() ``` ### 注意事项 - **隐私和安全**:模拟登录过程中应当遵守网站的使用条款和隐私政策,避免滥用账号。 - **动态内容和反爬机制**:某些网站可能会有动态内容加载、滑块验证码或是更复杂的登录流程,上述代码可能无法直接应对所有情况,可能需要针对特定网站的特性进行调整。 - **错误处理**:上述代码并未包含详细的异常处理逻辑,实际应用中应该添加适当的异常捕捉和处理机制。 通过以上步骤和代码示例,你可以开始学习如何使用 Python 的 Selenium 库来自动化完成登录过程,不过请注意合理合法地使用此类工具,尊重网站的规则和用户协议。---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值