云打码

模拟登录
(1)通过代码首先发送post请求,然后再发送get请求(登录后页面)
(2)先发送get,然后再发送post,在发送get(登录后的页面)
(3)先发送get,然后再发送post,在发送get,在get(登陆后页面)
验证码解决
(1)手动输入
(2)自动识别
软件识别,tesseract,OCR:光学识别,识别率的问题 80-90%
指令识别:tesseract 要识别的图片 文件名字
机器学习,
代码识别:代码识别之前可以首先将图片处理一下
pip install pytesseract
pip install pillow验证码解决
(1)手动输入
(2)自动识别
软件识别,tesseract,OCR:光学识别,识别率的问题 80-90%
指令识别:tesseract 要识别的图片 文件名字
机器学习,
代码识别:代码识别之前可以首先将图片处理一下
pip install pytesseract
pip install pillow
自动识别验证码
极验验证码
打码平台:为了解决机器识别不了稍微复杂的图片验证码,你将图片通过http的上传方式上传给打码平台,打码平台旁边坐着好多人,识别出来将结果给你 云打码平台
import requests
from bs4 import BeautifulSoup
import urllib.request
import time
import pytesseract
from PIL import Image
from PIL import ImageEnhance

def yanzheng(filepath):
    '''
    给一个图片路径,识别出来结果并且返回
    '''
    img = Image.open(filepath)
    # 转化为灰度图片
    img = img.convert('L')
    # 二值化处理
    threshold = 140
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    out = img.point(table, '1')
    ret = pytesseract.image_to_string(img)
    return ret

def main():
    # 创建一个会话
    s = requests.Session()
    i = 1
    while True:
        login_url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
        }
        login_r = s.get(url=login_url, headers=headers)
        # 解析这个网页,获取得到验证码图片的地址
        soup = BeautifulSoup(login_r.text, 'lxml')
        img_src = 'https://so.gushiwen.org' + soup.find('img', id='imgCode')['src']
        # 将图片保存到本地
        img_r = s.get(url=img_src, headers=headers)
        with open('code.png', 'wb') as fp:
            fp.write(img_r.content)
        # 获取得到表单里面的隐藏数据
        views = soup.find('input', id='__VIEWSTATE')['value']
        viewg = soup.find('input', id='__VIEWSTATEGENERATOR')['value']

        code = yanzheng('code.png')
        # 模拟发送post请求
        post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'
        formdata = {
            '__VIEWSTATE': views,
            '__VIEWSTATEGENERATOR': viewg,
            'from': 'http://so.gushiwen.org/user/collect.aspx',
            'email': '1090509990@qq.com',
            'pwd': '123456',
            'code': code,
            'denglu': '登录',
        }
        post_r = s.post(url=post_url, headers=headers, data=formdata)
        # print(post_r.text)
        # 判断有没有登录成功,如果失败,上面的操作接着做,如果成功,循环就可以退出
        if '退出登录' in post_r.text:
            print('第--%s--次登录成功--^_^' % i)
            break
        print('第--%s--次登录失败--o(╯□╰)o' % i)
        i += 1
        time.sleep(2)

if __name__ == '__main__':
    main()

.39.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,026评论 3 119
  • 极验http://jiyan.c2567.com/在实战中,将包含改代码的模块导入您的爬虫文件中,调用get_co...
    sexy_cyber阅读 586评论 0 0
  • 在python3中,整合了urllib,urllib2。。。等等python3中使用urllib.request来...
    紫弟阅读 3,666评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 1、有人误解,认为小孩子的记忆力很好。 2、记忆能力是一条曲线,最强的时候是12~18岁。 小孩的记忆力是可以启迪...
    心莲心阅读 179评论 0 0