吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3265|回复: 9
上一主题 下一主题
收起左侧

[Python 原创] Python——使用自动化模块进行滑动验证,ichrome持续更新的一个包。

  [复制链接]
跳转到指定楼层
楼主
liufu123 发表于 2022-11-15 16:22 回帖奖励
本帖最后由 liufu123 于 2022-11-15 16:27 编辑

网上介绍selenium的文章已经很多了, 这篇文章是一个持续更新的包,暂时用的人还不多—ichrome。

pip install ichrome  

一、需求:解决阿里滑动验证问题。

在这里插入图片描述

使用selenum访问时候配置liunx系统特别麻烦,注入JS也是无法通过验证。

二、话不多说上代码,异步启动:

asyncio.run(get_detail_anj()) 

三、pyautogui——进行滑动操作(单独写出来了,需要多次调用):

pip install pyautogui  
# 因为需要代{过}{滤}理,但是不知道怎么加,就只能这样加上去了。teb是启动的浏览器,循环最多十次跳出。
async def hdyz(tab):
    n = 0
    while True:
        title = await tab.title
        if title == '':
            pyautogui.moveTo(860, 230)
            pyautogui.click()
            pyautogui.typewrite('账号')
            time.sleep(1)
            pyautogui.press('tab')
            pyautogui.typewrite('密码')
            pyautogui.press('Enter')
            time.sleep(5)
        elif "滑动验证页面" in title:
            pyautogui.press('F5')
            pyautogui.PAUSE = 1  # 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep
            pyautogui.FAILSAFE = False
            pyautogui.moveTo(880, 430, duration=0.5)  # 定位元素 可以将x,y写入,duration 是移动时间
            pyautogui.dragTo(random.randint(1190, 1220), random.randint(420, 440), duration=0.5, button='left')

        elif "滑动验证页面" not in title:
            time.sleep(10)
            html = await tab.get_html(timeout=5)    #给出html
            break
        elif '无法访问' in title or '无法连接':
            break
        n += 1
        if n == 10:
            break
    return html

四、启动浏览器和输出部分:

async def get_detail_anj():

    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8"
                      "5.0.4183.102 Safari/537.36",
    }
    n = 1
    while True:
        try:
            url = 'baidu.com'
            proxyurl = f"{'127.0.0.1':8000}"    #代{过}{滤}理
            #headless为是否显示浏览器
            async with AsyncChromeDaemon(headless=False, user_agent=headers, proxy=proxyurl) as cd:  
               async with cd.connect_tab(index=0) as tab:
                   for page in range(n, 1000):
                       url = url+page   #页数
                       await tab.goto(requrl, timeout=5)        #浏览器访问网页
                       html = await hdyz(tab)       #调用滑动取出html
                       r = etree.HTML(html)
                       cookies = await tab.get_cookies()        #还可以取出全部cookies
                       if not in html:          #设置个xpath页数位了跳出
                           break
         except:
            # print('访问错误重新访问', url)
            n = page

五、整合下代码:

import random
import asyncio
import re
import time
import pyautogui
import redis
import requests
from ichrome import AsyncChromeDaemon
from lxml import etree

async def hdyz(tab):
    n = 0
    while True:
        title = await tab.title
        if title == '':
            pyautogui.moveTo(860, 230)
            pyautogui.click()
            pyautogui.typewrite('账号')
            time.sleep(1)
            pyautogui.press('tab')
            pyautogui.typewrite('密码')
            pyautogui.press('Enter')
            time.sleep(5)
        elif "滑动验证页面" in title:
            pyautogui.press('F5')
            pyautogui.PAUSE = 1  # 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep
            pyautogui.FAILSAFE = False
            pyautogui.moveTo(880, 430, duration=0.5)  # 定位元素 可以将x,y写入,duration 是移动时间
            pyautogui.dragTo(random.randint(1190, 1220), random.randint(420, 440), duration=0.5, button='left')

        elif "滑动验证页面" not in title:
            time.sleep(10)
            html = await tab.get_html(timeout=5)    #给出html
            break
        elif '无法访问' in title or '无法连接':
            break
        n += 1
        if n == 10:
            break
    return html

async def get_detail_anj():

    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/8"
                      "5.0.4183.102 Safari/537.36",
    }
    n = 1
    # ip 或者其他出问题可以重新访问这一页
    while True:
        try:
            url = 'baidu.com'
            proxyurl = f"{'127.0.0.1':8000}"    #代{过}{滤}理
            #headless为是否显示浏览器
            async with AsyncChromeDaemon(headless=False, user_agent=headers, proxy=proxyurl) as cd:  
               async with cd.connect_tab(index=0) as tab:
                   for page in range(n, 1000):
                       url = url+page   #页数
                       await tab.goto(requrl, timeout=5)        #浏览器访问网页
                       html = await hdyz(tab)       #调用滑动取出html
                       r = etree.HTML(html)
                       pg_list = r.xpath("//span[@class='wel']/text()")
                       cookies = await tab.get_cookies()        #还可以取出全部cookies
                       if page == int(pg_list[-1]):         #设置个xpath页数位了跳出
                           break
         except:
            # print('访问错误重新访问', url)
            n = page
if __name__ == "__main__":
    asyncio.run(get_detail_anj()) 

==代码需要简答修改,无法直接使用。==

免费评分

参与人数 3吾爱币 +8 热心值 +3 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
airipc + 1 + 1 我很赞同!
mosquito1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
坚持梦想 发表于 2022-11-16 08:23
本帖最后由 坚持梦想 于 2022-11-16 08:24 编辑

node下nut-tree/nut-js 有同样的功效 可以过阿里滑块  亲测有效
3#
外酥内嫩 发表于 2022-11-15 17:54
4#
beyond0518 发表于 2022-11-15 18:38
5#
xuexiba 发表于 2022-11-15 21:24
虽然需要简答修改,但是思路清晰,学习了,感谢。
6#
 楼主| liufu123 发表于 2022-11-16 13:38 |楼主
sp5087283 发表于 2022-11-15 18:33
这个ichrome是继承的selenium么

写法也不太一样,一直在更新的。文档也就英文的,也没几个人用。
7#
 楼主| liufu123 发表于 2022-11-16 13:39 |楼主
外酥内嫩 发表于 2022-11-15 17:54
一个新的自动化工具?

应该是的,写法也不一样的。用的人也不多
8#
 楼主| liufu123 发表于 2022-11-16 13:41 |楼主
xuexiba 发表于 2022-11-15 21:24
虽然需要简答修改,但是思路清晰,学习了,感谢。

感谢,爬取是其他的网站,因为是继承他人代码,也不好改,就把主要部分拿出来了。
9#
 楼主| liufu123 发表于 2022-11-16 13:43 |楼主
坚持梦想 发表于 2022-11-16 08:23
node下nut-tree/nut-js 有同样的功效 可以过阿里滑块  亲测有效

node也弄了下,我用这个puppeteer写了个,但是mac还好,linux基本过不了
10#
ywsl 发表于 2022-11-21 02:49
学会了学会了,有空试试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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