利用python登录知乎

  利用DecryptLogin和百度文字识别进行知乎登录,但在本项目中对验证码的识别正确率较低,所以可以尝试用其他手段来对验证码进行处理。

import base64
import requests
from DecryptLogin import login
from PIL import Image

'''
百度文字识别api要求
1.图像数据,将图片转为二进制流再进行base64编码后进行urlencode(坑,其实只需要base64编码即可,url编码没什么作用)
2.请求参数需加上access_token
3.请求方法为post
4.请求Header Content-Type:application/x-www-form-urlencoded
'''

#获取百度文字识别的access_token
def get_access_token(client_id,client_secret):
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret
    response = requests.get(host)
    res = response.json()
    if response:
        return res['access_token']

def getCode(imagepath):
    baidu_base_url='https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic'
    # 根据API Key和Secret Key先获取access_token
    access_token=get_access_token('yourApiKey','yourSecret')
    request_url=baidu_base_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    # 直接调用百度文字识别无法识别知乎验证码图片,另存也无法识别,具体原因未知,所以只好先将其截图保存再传给百度api用来识别
    im = Image.open(imagepath)
    img_size = im.size
    region = im.crop((0, 0, img_size[0],img_size[1]))
    region.save('D:\\temp\\captcha.png')
    #以二进制流形式打开图片
    f = open('D:\\temp\\captcha.png', 'rb')
    #图片base64编码
    img = base64.b64encode(f.read())
    params = {"image": img}
    response = requests.post(request_url, data=params,headers=headers)
    if response:
        if (len(response.json()['words_result']) > 0):
            print(response.json()['words_result'][0]['words'])
            return str(response.json()['words_result'][0]['words'])

if __name__ == "__main__":
    lg = login.Login()
    infos_return, session = lg.zhihu(username='yourUsername', password='yourpassword', mode='pc',crack_captcha_func=getCode)
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 库来自动化完成登录过程,不过请注意合理合法地使用此类工具,尊重网站的规则和用户协议。---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值