• 手工验证码识别


    from builtins import input,open,print
    
    import requests
    from bs4 import BeautifulSoup
    
    
    headers={
                'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
        }
    
    
    def download_code(s):
        url='https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
    
        r = s.get(url=url,headers=headers)
        soup = BeautifulSoup(r.text,'lxml')
        image_src = 'https://so.gushiwen.org'+soup.find('img',id='imgCode')['src']
        __VIEWSTATE = soup.find('input',id="__VIEWSTATE")['value']
        __VIEWSTATEGENERATOR = soup.find('input',id="__VIEWSTATEGENERATOR")['value']
        code_img =s.get(image_src,headers=headers)
        with open('code_img.png','wb')  as fp:
            fp.write(code_img.content)
    
        from PIL import Image
        import matplotlib.pyplot as plt
        img = Image.open('code_img.png')
        plt.figure('pic')
        plt.imshow(img)
        plt.axis('off') # 关闭坐标
        plt.show()
    
        return __VIEWSTATE, __VIEWSTATEGENERATOR
    
    
    def login(view,viewg,session):
        post_url='https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'
        # 提示用户输入验证码
        code=input('请输入验证码:')
        print(view)
        print(viewg)
        print(session)
        formdata = {
            '__VIEWSTATE':view,
            '__VIEWSTATEGENERATOR':viewg,
            'from':'http://so.gushiwen.org/user/collect.aspx',
            'email':'111',
            'pwd':'222',
            'code':code,
            'denglu':'登录',
        }
        r=session.post(url=post_url,headers=headers,data=formdata)
        # print(r.status_code)
        with open('gushi.html','w',encoding='utf8') as fp:
            fp.write(r.text)
    
    
    def main():
        s=requests.Session()
        # 下载验证码到本地
        view,viewg=download_code(s)
        login(view,viewg,s)
    
    
    if __name__ == '__main__':
        main()
    
  • 相关阅读:
    bloom filter
    Crowdsourcing(众包)
    瘦客户端
    如何书写高效的工作邮件:给你十条建议
    JSON
    MATLAB实现频数直方图——hist的使用
    Matlab中给figure添加图例(legend),标题(title)和颜色(color)
    数字信号处理中各种频率关系
    论文的写作要求、流程与写作技巧
    中继器、集线器(HUB)、网桥、交换机、路由器比较
  • 原文地址:https://www.cnblogs.com/amize/p/15203313.html
Copyright © 2020-2023  润新知