首页 > 编程语言 >python 基础中requests 验证码

python 基础中requests 验证码

时间:2024-07-15 15:41:56浏览次数:16  
标签:code python 验证码 url VIEWSTATEGENERATOR requests post VIEWSTATE

验证码登录

import requests

# 古诗文网登录页面的URL地址
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}

# 获取网络源代码
response = requests.get(url=url, headers=headers)
content = response.text

# 使用BeautifulSoup来解析网页源码,获取__VIEWSTATE和__VIEWSTATEGENERATOR参数
from bs4 import BeautifulSoup

soup = BeautifulSoup(content, 'lxml')

# 获取__VIEWSTATE
VIEWSTATE = soup.select('#__VIEWSTATE')[0].attrs.get('value')
print('VIEWSTATE: ', VIEWSTATE)

# 获取__VIEWSTATEGENERATOR
VIEWSTATEGENERATOR = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')
print('VIEWSTATEGENERATOR: ', VIEWSTATEGENERATOR)

# 获取验证码图片
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = 'https://so.gushiwen.cn' + code

# import urllib.request
# urllib.request.urlretrieve(url=code_url,filename='code.jpg')
session = requests.session()
# 验证码url的内容
response_code = session.get(code_url)

# webbrowser.open(code_url)

# 图片下载要使用二进制数据
content_code = response_code.content
# wb模式就是将二进制数据写入文件
with open('code.jpg', 'wb') as fp:
    fp.write(content_code)

# 获取验证码图片后,下载到本地,观察本地验证码,在控制台输入code
code_name = input('请输入登录验证码:')

# 点击登录
url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'

data_post = {
    '__VIEWSTATE': VIEWSTATE,
    '__VIEWSTATEGENERATOR': VIEWSTATEGENERATOR,
    'from': 'http://so.gushiwen.cn/user/collect.aspx',
    'email': '[email protected]',
    'pwd': 'dhc123456',
    'code': code_name,
    'denglu': '登录'
}

# 获取网络源代码(这里能用requests对象,要用验证码的session对象,保持一个Cookie环境)
response_post = session.post(url=url_post, headers=headers, data=data_post)
content_post = response_post.text
with open('denglu.html','w',encoding='utf-8') as pf:
    pf.write(content_post)

标签:code,python,验证码,url,VIEWSTATEGENERATOR,requests,post,VIEWSTATE
From: https://www.cnblogs.com/dhcc/p/18303290

相关文章

  • Python 数据可视化与报告生成
    Python数据可视化与报告生成在当今的数据驱动世界中,数据可视化和报告生成是数据科学家、分析师和业务决策者不可或缺的工具。Python,作为一种强大且灵活的编程语言,通过其丰富的库和框架,为数据可视化和报告生成提供了广泛的支持。本文将深入探讨Python在数据可视化和报告生......
  • Python Web应用的部署与维护
    PythonWeb应用的部署与维护是一个涉及多个环节和技术的复杂过程,涵盖了从项目准备、服务器配置、代码部署到后期监控与维护的全方位工作。以下是对这一过程的详细阐述。一、Web应用的部署1.项目准备在部署之前,首先需要确保PythonWeb项目已经开发完成,并且经过了充分的测......
  • python 20行代码 无图 turtle 缺心眼(缺良心)还没治好 模拟太阳系天体运行系统
    短短12h赞就破10个了,没20个很好了,我可不想失去头发其实我不想做这个程序的但是今天是我参加完天文比赛的10分之57周年(我2024.5.12参加的)20行以下代码段为准本期新规矩:天王18步老规矩.先放代码importturtle,time;screen=turtle.Screen();screen.bgcolor('black');scr......
  • Python 集合:深入理解与应用
    一、引言1.在Python编程中,集合(Set)是一种强大而有用的数据结构。它具有独特的特性,适用于解决各种问题,特别是在处理不重复元素和集合操作时。二、集合的创建#使用花括号创建集合set1={1,2,3,4,5}#使用set()函数创建集合set2=set([5,6,7,8,9])三、集合......
  • 《探索 Python 字典的奥秘》
    在Python中,字典(Dictionary)是一种非常强大和灵活的数据结构。它以键值对(Key-ValuePair)的形式存储数据,类似于现实生活中的字典,通过查找单词(键)来获取其释义(值)。一、字典的定义字典可以使用花括号 {} 来创建,键和值之间用冒号 : 分隔,键值对之间用逗号 , 分隔,dict 作为......
  • python中逻辑运算符and 和 or 的优先级问题。
    python的说明文档以及教材上、网上都说明and的优先级大于or。但我经过实际操作,发现其中规律似乎并不简单,下面我列举一些代码,来提出我的疑问:有时候or的优先级高,有时候and优先级高,并且并不是从左至右运算。首先说明python当中的and和or运算逻辑如下(这里必须懂):    1......
  • Python篇——继承及多重继承
    引言为什么要用到继承呢?因为继承可以减少代码冗余以及提高代码的重用性。1继承继承用于类的创建,继承描述类与类之间的关系新创建的类是子类,被继承的类是父类子类继承父类的属性和方法1.1场景条件——创建父类定义Person类,有两个属性:name和age,和一个方法greet,输出:Hi,......
  • Python篇——私有属性
    1私有属性的特点Python类中的私有属性是一种实现封装的方式,用于限制对某些属性的直接访问。以下是关于Python类中私有属性的主要特点:1.1命名约定使用双下划线(__)前缀来创建私有属性,例如‘ __private_attr’1.2名称改写(NameMangling)Python会自动将双下划线开头的属......
  • 面试算法(排序)附带c++/python实现
            排序算法是面试中会经常会被问到的一类问题,如果可以掌握较多的排序算法,在面试过程中才更有机会被面试官看重哦,下面我们准备了一些常见的面试算法,并分别给出了c++和python的代码实现,小伙伴们一起学起来吧!冒泡排序(BubbleSort)        基于交换的排序,......
  • python 面试宝典
    50道必备的Python面试题(建议点赞)-阿里云开发者社区(aliyun.com) ▍2、为什么Python执行速度慢,我们如何改进它?Python代码执行缓慢的原因,是因为它是一种解释型语言。它的代码在运行时进行解释,而不是编译为本地语言。为了提高Python代码的速度,我们可以使用CPython、Numba,或......