首页 > 其他分享 >古诗文网模拟登录

古诗文网模拟登录

时间:2024-01-29 12:22:24浏览次数:26  
标签:登录 img url self gushiwen headers 古诗文 模拟 cn

古诗文网模拟登陆(含验证码识别)

一、

首先我们需要进如未登录页面(https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx)

url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'

获得以上内容(注意:需要自己先登录)

二、

这里我们需要自己在网上使用一些API获取图片验证码的内容,我使用的是超级鹰平台。

以下是获取图片验证码内容的代码

	    response = self.session.get(url=self.start_url,headers=self.headers)
        lxml = etree.HTML(response.text)
        #获取图片验证码的内容
        img_src = 'https://so.gushiwen.cn' + lxml.xpath('//img[@id="imgCode"]/@src')[0]
        img_data = self.session.get(url=img_src,headers=self.headers).content
        with open('image.jpg','wb') as f:
            f.write(img_data)
        #下面的问号内容需要填自己的,这里我改了一下,大家注意
        chaojiying = Chaojiying_Client('?????', '??????', '?????')  # 用户中心>>软件ID 生成一个替换 96001
        im = open('image.jpg', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
        result = chaojiying.PostPic(im, 1004)
        return result['pic_str']

大家可以发现这里使用了session保持会话,因为验证码会刷新,所以直接使用request请求会导致验证码错误。

三、

因为登录是一个POST请求,我们需要将自己填写的内容作为信息传给浏览器,大家可以先尝试一登录后,右击检查,然后选择NetWork,然后刷新界面,(我是用的是google浏览器),然后会发现一个下面的文件。

这里又是一个URL,这个是登录的URL,大家也可以尝试一下验证码错误,就会发现下面的图片的code内容是空的,此时我们的正常页面也显示不出来。

然后选择Payload,图片为:

以上信息就是我们作为POST请求需要传入的信息

data = {
            '__VIEWSTATE': 'r5bZftSiPvANK8iE6QXSHx / JRmAoxtTy0PuLHUCmGwvcDQ1Vty0vHPYC5DbuwuM + 5GNPEEkLtwZwHjawdhbtxgKwt9dB + a5yWfSIP5PTd0HSlIstBBUKo3 / KaDEbDfprad3ZDnlkaFmP5fKuuJwokEyPJYE =',
            '__VIEWSTATEGENERATOR': 'C93BE1AE',
            'from': 'http: // so.gushiwen.cn / user / collect.aspx',
            'email': '?????',
            'pwd': '??????',
            'code':imgCode,
            'denglu': '登录'
        }

完整代码展示:

#这个是平台自己写的代码,我们可以直接获得包,放入文件里用就行
from chaojiying_Python.chaojiying import Chaojiying_Client
import requests
from lxml import etree
from UA_info import ua_list
import random
class GushiSpider(object):
    def __init__(self):
        #这个是开始的URL,目的是获取图片验证码信息
        self.start_url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
        self.headers = {
            'User-Agent': random.choice(ua_list)
        }
        #使用session保持会话,维持一开始的内容
        self.session = requests.Session()
        #这个是登录的URL,我们可以发现这是POST请求,所以需要传入一些信息
        self.end_url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
    def get_img(self):
        response = self.session.get(url=self.start_url,headers=self.headers)
        #将网页信息转换为可以使用xpath语法解析的代码
        lxml = etree.HTML(response.text)
        #使用解析语法解析代码,并进行网页URL拼接
        img_src = 'https://so.gushiwen.cn' + lxml.xpath('//img[@id="imgCode"]/@src')[0]
        #获取图片验证码的信息
        img_data = self.session.get(url=img_src,headers=self.headers).content
        with open('image.jpg','wb') as f:
            f.write(img_data)
        #使用超级鹰代码对验证码进行解析,获取验证码的内容
        chaojiying = Chaojiying_Client('????', '?????', '?????')  # 用户中心>>软件ID 生成一个替换 96001
        im = open('image.jpg', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
        result = chaojiying.PostPic(im, 1004)
        return result['pic_str']
    def Login_Gushi(self,imgCode):
        data = {
            '__VIEWSTATE': 'r5bZftSiPvANK8iE6QXSHx / JRmAoxtTy0PuLHUCmGwvcDQ1Vty0vHPYC5DbuwuM + 5GNPEEkLtwZwHjawdhbtxgKwt9dB + a5yWfSIP5PTd0HSlIstBBUKo3 / KaDEbDfprad3ZDnlkaFmP5fKuuJwokEyPJYE =',
            '__VIEWSTATEGENERATOR': 'C93BE1AE',
            'from': 'http: // so.gushiwen.cn / user / collect.aspx',
            'email': '?????',
            'pwd': '??????',
            #将获取的验证码传入信息中
            'code':imgCode,
            'denglu': '登录'
        }
        #使用POST请求传入信息
        response = self.session.post(url=self.end_url,data=data,headers=self.headers)
        #响应登录后的界面
        print(response.text)
if __name__ == '__main__':
    gushi = GushiSpider()
    imgcode = gushi.get_img()
    gushi.Login_Gushi(imgcode)

标签:登录,img,url,self,gushiwen,headers,古诗文,模拟,cn
From: https://www.cnblogs.com/wjx-2005-07-01/p/17994251

相关文章

  • go中间件实现登录验证
    一、概述在java中可以使用过滤器、拦截器实现登录验证(验证token的有效性、判断哪些路径需要登录、哪些路径不需要登录)等等的一些公共性的验证操作。go语言中有没有类似的东西呢,答案是有的,go语言中可以使用中间件来完成这个操作。接下来使用gin+中间件的形式来验证t......
  • 模拟集成电路设计系列博客——5.3.2 电容重置开关电容增益电路
    5.3.2电容重置开关电容增益电路为了消除需要放大器输出每个时钟周期都需要摆动到接近0V,并且仍然能够取消掉放大器的失调电压,可以使用一个电容重置正义电路。这个正义电路的基本思路是通过一个之前充电到输出电压电容,将放大器的输出在复位相耦合到一个反相的输入。因此,我们会看到......
  • 模拟集成电路设计系列博客——5.3.1 可重置开关电容增益电路
    5.3.1可重置开关电容增益电路最常见的非滤波器模拟功能是可能增益电路,即输出信号是输入信号的比例缩放。使用开关电容技术可以实现精确的正义电路。开关电容增益电路的一个重要应用是在流水线ADC中。具体的流水线ADC中的开关电容电路会在那个章节中进行讨论。在有源RC电路中,增......
  • 2024.1.28 模拟赛
    T1求\(\sum_{i=1}^n\sum_{j=1}^n\varphi(\gcd(\varphi(i),\varphi(j)))\).\(n\le10^7\).不会莫反,分块打表骗到了60pts.T2人类智慧题?只能手玩出\(n\le3\)的数据。期望20pts.最后一看,场上最高20pts。/jyT3支持连边断边,带边权,动态求树的直径。感觉像LCT/To......
  • R语言中的模拟过程和离散化:泊松过程和维纳过程
    全文链接:http://tecdat.cn/?p=17303 原文出处:拓端数据部落公众号本文中,我们讨论了一个将Poisson过程与Wiener过程结合在一起的最佳算法的问题。实际上,为了生成泊松过程,我们总是习惯于模拟跳跃之间的持续时间。我们使用给定时间间隔内跳跃的均匀性,该条件取决于跳跃的次数。首先......
  • 注册和登录后端逻辑
    注册逻辑:用户在前端输入账户和密码、以及校验码(todo)校验用户的账户、密码、校验密码,是否符合要求非空账户长度不小于4位密码就不小于8位账户不能重复账户不包含特殊字符密码和校验密码相同对密码进行加密(密码千万不要直接以明文存储到数据库中)向数据库插入用户数......
  • 兵棋总体设计和虚拟演兵——兵棋、作战模拟与仿真电子书
    1、兵棋总体设计-阳曙光2018:链接:https://pan.baidu.com/s/1kpAlV-bfSwkZMLZoYglNWQ提取码:bcp62、虚拟演兵——兵棋、作战模拟与仿真-杨南征:链接:https://pan.baidu.com/s/1V8aJ1sIJQ8H9VMSK0hBF0g提取码:54ne翻译搜索复制......
  • Educational Codeforces Round 65 (Rated for Div. 2)C. News Distribution(模拟,计算的
    这道题目明显和出现4次的数和出现2次的数的个数有关系,只需要在每次更新之后维护这两个信息即可,我们在算出现2次的数的个数时其实会把出现4次的数的个数会把出现2次的数的个数+2,在判断时需要考虑这一点。也就是\(cnt2>=4\&\&cnt4>=1\)时才有解#include<bits/stdc++.h>#definer......
  • 登录认证引入(JWT令牌)
    //ArticleControllerpackagecom.di.bigevent.controller;importcom.di.bigevent.pojo.Result;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.anno......
  • 【小记】Docker容器间SSH公钥自动交换实现免密登录的一次尝试
    咋想到这茬了最近开始忙毕设的事儿了,想部署个伪分布式的Spark+Hadoop集群来进行测试。思来考去,最终咱把目光放在了Docker上。盘了两天,发现这玩意意外的有趣,镜像构建好后开箱即用,省去了些配置环境的成本。不过呢,在配置Hadoop的时候我发现了一个问题——Hadoop分布式搭建要求各......