找回密码
  注册[Register]
查看: 577|回复: 9

[python] 顶象无感验证码demo

[复制链接]
发表于 2021-8-27 16:40 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

[Python] 纯文本查看 复制代码
import cv2
import numpy as np
from selenium import webdriver  
from selenium.webdriver.common.action_chains import ActionChains #引入ActionChains鼠标操作类  
from selenium.webdriver.chrome.options import Options
import time
import requests
def get_track(distance):      # distance为传入的总距离
    track=[]
    current=0
    mid=distance*4/5
    t=0.2
    v=10
    while current<distance:
        if current<mid:
            a=2
        else:
            a=-3
        v0=v
        v=v0+a*t
        move=v0*t+1/2*a*t*t
        current+=move
        track.append(round(move))
    return track

def move_to_gap(driver,slider,tracks):     # slider是要移动的滑块,tracks是要传入的移动轨迹
    ActionChains(driver).click_and_hold(slider).perform()
    for x in tracks:
        ActionChains(driver).move_by_offset(xoffset=x,yoffset=0).perform()
    time.sleep(0.5)
    ActionChains(driver).release().perform()

def show(name):
    cv2.imshow('Show', name)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

def main():
    otemp = 'dx2.png'
    oblk = 'dxbgg.png'
    target = cv2.imread(otemp, 0)
    #target = cv2.resize(targetsrc, (0, 0), fx=0.75, fy=0.75, interpolation=cv2.INTER_NEAREST)
    #show(target)
    template = cv2.imread(oblk, 0)
    show(template)
    w, h = target.shape[::-1]
    temp = 'temp.jpg'
    targ = 'targ.jpg'
    cv2.imwrite(temp, template)
    cv2.imwrite(targ, target)
    target = cv2.imread(targ)
    target = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY)
    target = abs(255 - target)
    cv2.imwrite(targ, target)
    target = cv2.imread(targ)
    template = cv2.imread(temp)
    result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)
    x, y = np.unravel_index(result.argmax(), result.shape)
    # 展示圈出来的区域
    cv2.rectangle(template, (y, x), (y + w, x + h), (7, 300, 150), 2)
    show(template)
    return y


chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9221")
browser = webdriver.Chrome(r'D:\pythongc\pythongc\chromedriver.exe', options=chrome_options)
browser.get('http://cdn.dingxiang-inc.com/ctu-group/captcha-ui/demo/')

time.sleep(3) #3m
ele = browser.find_element_by_css_selector('#dx_captcha_basic_bg_1 > canvas')
#browser.execute_script('') #隐藏再截图
browser.execute_script('''
$("#dx_captcha_basic_sub-slider_1").hide();
$("#dx_captcha_basic_init-inform_1").hide();
$("#dx_captcha_basic_bar_1").hide();
$("#demo-embed").width("400px").height("200px");
$("#dx_captcha_basic_pic_1").height("200px");
$("#dx_captcha_basic_bg_1").height("200px");
$("#dx_captcha_basic_bg_1").children().css('width','400px').css('height','200px');
''') #隐藏再截图
time.sleep(1) #3m
ele.screenshot('dxbgg.png')
browser.execute_script('''
$("#dx_captcha_basic_sub-slider_1").show();
$("#dx_captcha_basic_init-inform_1").show();
$("#dx_captcha_basic_bar_1").show();
$("#demo-embed").width("300px").height("150px");
$("#dx_captcha_basic_pic_1").height("150px");
$("#dx_captcha_basic_bg_1").height("150px");
$("#dx_captcha_basic_bg_1").children().css('width','300px').css('height','150px');
''') #隐藏再截图




imgurl = browser.find_element_by_css_selector('#dx_captcha_basic_sub-slider_1 > img').get_attribute('src')
response = requests.get(imgurl).content
with open( 'dx2.png','wb' ) as f:
    f.write(response)

result =main()
print(result)
pos = int((result-10) *0.75)
print(pos)
huakuai =  browser.find_element_by_css_selector('#dx_captcha_basic_slider-img-normal_1')
# move_to_gap(browser,huakuai,get_track(pos))
ActionChains(browser).click_and_hold(huakuai).perform()
ActionChains(browser).move_by_offset(xoffset=pos,yoffset=0).perform()
#time.sleep(1)
#ActionChains(browser).release().perform()
#trs = pos / 5
#last = pos %5
#ActionChains(browser).move_by_offset(xoffset=trs,yoffset=0).perform()
#time.sleep(0.2)
#ActionChains(browser).move_by_offset(xoffset=trs,yoffset=0).perform()
#time.sleep(0.1)
#ActionChains(browser).move_by_offset(xoffset=trs,yoffset=0).perform()
#time.sleep(0.08)
#ActionChains(browser).move_by_offset(xoffset=trs,yoffset=0).perform()
#time.sleep(0.12)
#ActionChains(browser).move_by_offset(xoffset=trs,yoffset=0).perform()
#time.sleep(0.2)
#if last> 0:
#    ActionChains(browser).move_by_offset(xoffset=last,yoffset=0).perform()
time.sleep(0.5)
ActionChains(browser).release().perform()
message = browser.find_element_by_xpath('//*[@id="dx_captcha_basic_bar-success_1"]').text
print(message)

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2021-8-27 16:40 | 显示全部楼层
6666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 16:47 | 显示全部楼层

支持楼主,谢谢分享。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 17:23 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 17:37 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 19:32 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 19:32 | 显示全部楼层
666666666666666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 20:30 | 显示全部楼层
小手一抖,牛币拿走。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 21:37 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-8-27 21:48 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|大牛论坛 |我的广告

GMT+8, 2024-5-6 20:56 , Processed in 0.041447 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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