问答媒体

 找回密码
 立即注册
快捷导航
搜索
热搜: 活动 交友 discuz
查看: 107|回复: 0

识别搜狗验证码成功登录进行反反爬教程

[复制链接]

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-12-2 16:18:31 | 显示全部楼层 |阅读模式
今日学习了一下抓取sou狗搜索网站的关键排名情况,在频繁请求页面并获取网站的排名时,爬虫ip被封禁,需要手动输入验证码才能解禁。



对于这样的验证码处理,还是比较简单的,首先就时调用浏览器,获取这个页面,然后对验证码图片进行切割保存。
一、登录
用selenium打开页面信息,屏蔽webdriver的信息



二、截取验证码
将浏览器保存为图片,定位出验证码的坐标位置,进行切割保存
def open_sougou():
    driver.get(url)
    driverWait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'img#seccodeImage')))


def get_screen_shot():
    screen = driver.get_screenshot_as_png()
    screen_shot = Image.open(BytesIO(screen))
    return screen_shot

def get_captha_position():
    element = driver.find_element_by_css_selector("img#seccodeImage")
    location = element.location
    size = element.size
    left,top,right,bottom = location['x'],location['y'],location['x'] + size['width'],location['y'] + size['height']
    return left,top,right,bottom

def get_captha_shot(name='ca.png'):

    driver.execute_script("document.body.style.zoom=0.8")
    screen_shot = get_screen_shot()
    left,top,right,bottom = get_captha_position()
    captha_shot = screen_shot.crop((left,top,right,bottom))
    captha_shot.save(name)



三、联众接口识别
这里用第三方接口识别验证码



四、灰度处理图片
用opencv库对图片进行灰度处理,调用联众接口方法,获取验证码
def handle_img():
    yzm = cv2.imread('ca.png')
    yzm = cv2.cvtColor(yzm,cv2.COLOR_BGR2GRAY)
    # thresh, yzm = cv2.threshold(yzm, 160, 255, cv2.THRESH_BINARY)
    cv2.imwrite('ca2.png',yzm)

def get_imgcode():
    code = lianzhong()
    print(code)
    return code五、验证
拿到返回的验证码信息,进行页面输入
def send_code(code):
    driver.execute_script("document.body.style.zoom=1")
    driver.find_element_by_css_selector("input[type='text']").send_keys(code)
    time.sleep(1)
    driver.find_element_by_xpath("//a[@id='submit']").click()
    time.sleep(1)
    driver.find_element_by_css_selector("a[onclick='changeImg2();']").click()六、运行



运行主函数后,成功验证成功,并返回搜狗正常页面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 问答媒体

GMT+8, 2025-3-15 17:06 , Processed in 0.097383 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表