鱼C论坛

 找回密码
 立即注册
查看: 2177|回复: 18

[已解决]各路高手,碰到一个实际工作中的问题,探讨一下用python能否实现自动化

[复制链接]
发表于 2021-3-11 09:12:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个登陆程序,我需要的是 用一台电脑 登陆60+个账号,密码,就是登陆一个,退出 再登陆下一个,再继续退出
这个用人工做 会很麻烦的  各路高手能否指点一下  代码能否实现
最佳答案
2021-3-11 16:35:02
用win32API 不就好了吗?

import win32api
import time
#鼠标移动
def mouse_move(x,y):
    win32api.SetCursorPos([x,y])

#鼠标点击,默认左键
def mouse_click(click_type="left"):
    if click_type=="left":
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)   
    else:
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    time.sleep(0.01)

#鼠标双击击,默认左键
def mouse_double_click(click_type="left"):
    if click_type=="left":
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        time.sleep(0.01)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    else:
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
        time.sleep(0.01)
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    time.sleep(0.01)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-11 09:20:52 | 显示全部楼层
代码当然可以了,一次登录60个都没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:27:52 | 显示全部楼层
pytho 发表于 2021-3-11 09:20
代码当然可以了,一次登录60个都没问题

具体应该怎么做呢,需要用到哪个模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:30:18 | 显示全部楼层
浏览器账号登录的话可以用webdriver

程序登录的话可以尝试pywin32+pyautogui
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:32:17 | 显示全部楼层
wp231957 发表于 2021-3-11 09:27
具体应该怎么做呢,需要用到哪个模块

requests模块就可以了
大概这个样子
import requests

headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36",
        "Accept": "application/json, text/plain, */*",
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
}
def login(name,password):
        url = 'https://xxxx'
        data = {
                "password":password,
                "name":name

        }
         
        res = requests.post(url,data,headers = headers)
        print(res.txt)

def main():
        password = '123456'
        with open('用户名.txt','r') as f:
                names = f.readlines()
                for u in names:
                        u = (u.strip("\n"))
                        
                        login(u, password)
if __name__ == '__main__':
        main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:33:34 | 显示全部楼层
wp231957 发表于 2021-3-11 09:27
具体应该怎么做呢,需要用到哪个模块

登录的话requests模块就够了
弄了一个示例代码,不过在审核中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:39:14 | 显示全部楼层
pytho 发表于 2021-3-11 09:33
登录的话requests模块就够了
弄了一个示例代码,不过在审核中

不是浏览器登陆,是程序  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 09:54:49 | 显示全部楼层
wp231957 发表于 2021-3-11 09:39
不是浏览器登陆,是程序

哦哦,这个没搞过
你看看4楼的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 09:56:15 | 显示全部楼层
逃兵 发表于 2021-3-11 09:30
浏览器账号登录的话可以用webdriver

程序登录的话可以尝试pywin32+pyautogui

谢谢,我先搜一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 10:55:41 | 显示全部楼层
才60个都不够写代码麻烦的,直接复制粘贴不就好了么?除非是每天每次都要登录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 11:05:59 | 显示全部楼层
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件
使用循环:
    1. 复制账号到粘贴板, pyautogui 点击输入框,粘贴
    2.复制密码,重复 1步骤。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 13:07:00 | 显示全部楼层
Cool_Breeze 发表于 2021-3-11 11:05
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件

我总感觉pyautogui库和pyperclip库有bug
每一步都得sleep 不然会不按照顺序来 下面的代码会先于上面的代码执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:23:08 | 显示全部楼层
kogawananari 发表于 2021-3-11 13:07
我总感觉pyautogui库和pyperclip库有bug
每一步都得sleep 不然会不按照顺序来 下面的代码会先 ...

没有遇到过。。可能我用的少吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:32:00 From FishC Mobile | 显示全部楼层
Cool_Breeze 发表于 2021-3-11 11:05
pyautogui 点击点击登录,然后点击退出

将账户密码保存为文件,写个脚本解析文件

如果是安全性高点的密码输入框可能会粘贴不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 14:35:15 | 显示全部楼层
hrp 发表于 2021-3-11 14:32
如果是安全性高点的密码输入框可能会粘贴不了

只有中文是需要粘贴的  键盘上有键可以直接敲字母的不需要粘贴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:30:24 | 显示全部楼层
按键精灵,可以了解一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:35:02 | 显示全部楼层    本楼为最佳答案   
用win32API 不就好了吗?

import win32api
import time
#鼠标移动
def mouse_move(x,y):
    win32api.SetCursorPos([x,y])

#鼠标点击,默认左键
def mouse_click(click_type="left"):
    if click_type=="left":
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)   
    else:
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    time.sleep(0.01)

#鼠标双击击,默认左键
def mouse_double_click(click_type="left"):
    if click_type=="left":
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
        time.sleep(0.01)
        win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    else:
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
        time.sleep(0.01)
        win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    time.sleep(0.01)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-11 16:39:32 From FishC Mobile | 显示全部楼层
z5560636 发表于 2021-3-11 16:35
用win32API 不就好了吗?

输入呢,向用户名框和密码框输入咋弄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-11 16:43:06 | 显示全部楼层
wp231957 发表于 2021-3-11 16:39
输入呢,向用户名框和密码框输入咋弄
from config import VK_CODE
import win32api

def key_input( input_words=''):
    for word in input_words:
        win32api.keybd_event(VK_CODE[word], 0, 0, 0)
        win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
        time.sleep(0.1)

def key_even( input_key):
    win32api.keybd_event(VK_CODE[input_key], 0, 0, 0)
    time.sleep(0.01)
    win32api.keybd_event(VK_CODE[input_key], 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(0.3)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 09:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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