开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 448|回复: 10
收起左侧

[python] SunnyDLL为什么设置不同进程不同IP没效果

[复制链接]
结帖率:94% (316/335)
发表于 2025-8-19 22:48:38 | 显示全部楼层 |阅读模式   广东省深圳市
30精币
[Python] 纯文本查看 复制代码
import time
import logging
import sys
import importlib.util

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

# 导入SunnyNet模块
from SunnyNet.SunnyNet import SunnyNet

# 第一个代理配置
proxy_config_1 = {
    'type': 'socks5',
    'host': '36.111.32.147',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第二个代理配置
proxy_config_2 = {
    'type': 'socks5',
    'host': '14.22.79.198',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第一个VX实例的进程ID
weixin_pid_1 = 19908
weixin_appex_pids_1 = [2860, 16096, 24504, 24840]

# 第二个VX实例的进程ID
weixin_pid_2 = 27456
weixin_appex_pids_2 = [4996, 7664, 11448, 24264]

# 创建第一个SunnyNet实例
print("\n=== 创建第一个代理实例 ===")
sunny1 = SunnyNet()
sunny1.set_port(8889)  # 设置端口为8889
if sunny1.start():
    print("✅ 第一个SunnyNet实例启动成功")
    
    # 确保驱动已加载
    if sunny1.open_drive(True):
        print("✅ SunnyNet驱动加载成功")
    
    # 构建代理URL
    proxy_type = proxy_config_1['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'
    
    host = proxy_config_1['host']
    proxy_port = proxy_config_1['port']
    username = proxy_config_1.get('username', '')
    password = proxy_config_1.get('password', '')
    
    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"
    
    print(f"设置上游代理: {proxy_url}")
    
    # 设置上游代理
    if sunny1.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")
        
        # 添加进程到代理
        sunny1.process_add_pid(weixin_pid_1)
        print(f"添加进程: PID={weixin_pid_1}, 名称=WeChat.exe")
        
        for pid in weixin_appex_pids_1:
            sunny1.process_add_pid(pid)
            print(f"添加进程: PID={pid}, 名称=WeChatAppEx.exe")
    else:
        print("❌ 上游代理设置失败")
        error = sunny1.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第一个SunnyNet实例启动失败")
    error = sunny1.error()
    print(f"错误信息: {error}")

# 等待一段时间,确保两个代理实例分开
time.sleep(1)

# 创建第二个SunnyNet实例
print("\n=== 创建第二个代理实例 ===")
sunny2 = SunnyNet()

sunny2.set_port(8888)  # 设置端口为8888
if sunny2.start():
    print("✅ 第二个SunnyNet实例启动成功")

    # 驱动已经加载,不需要再次加载
    print("✓ SunnyNet驱动已加载")

    # 构建代理URL
    proxy_type = proxy_config_2['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'

    host = proxy_config_2['host']
    proxy_port = proxy_config_2['port']
    username = proxy_config_2.get('username', '')
    password = proxy_config_2.get('password', '')

    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"

    print(f"设置上游代理: {proxy_url}")

    # 设置上游代理
    if sunny2.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")

        # 添加进程到代理
        sunny2.process_add_pid(weixin_pid_2)
        print(f"添加进程: PID={weixin_pid_2}, 名称=WeChat.exe")

        for pid in weixin_appex_pids_2:
            sunny2.process_add_pid(pid)
            print(f"添加进程: PID={pid}, 名称=WeChatAppEx.exe")
    else:
        print("❌ 上游代理设置失败")
        error = sunny2.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第二个SunnyNet实例启动失败")
    error = sunny2.error()
    print(f"错误信息: {error}")

print("\n=== 测试完成 ===")
print("两个VX实例分别使用不同的代理。")
print(f"第一个VX实例 (PID: {weixin_pid_1}) 使用代理: {proxy_config_1['host']}:{proxy_config_1['port']}")
print(f"第二个VX实例 (PID: {weixin_pid_2}) 使用代理: {proxy_config_2['host']}:{proxy_config_2['port']}")

# 保持程序运行,等待用户输入
input("\n按回车键退出并关闭代理...")

# 清理资源
print("\n=== 清理资源 ===")
sunny1.stop()
print("第一个代理实例已停止")
sunny2.stop()
print("第二个代理实例已停止")
print("所有资源已清理完毕")


运行完之后两个进程都变成了第一个代理


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:50% (1/2)
发表于 2025-8-20 00:02:16 | 显示全部楼层   河北省张家口市
驱动设置有点问题
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2025-8-20 00:03:34 | 显示全部楼层   河北省张家口市
如果仍然无效,可以尝试:
使用不同的端口范围:

python
sunny1.set_port(10000)
sunny2.set_port(20000)
import time
import logging
import sys
import importlib.util

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

# 导入SunnyNet模块
from SunnyNet.SunnyNet import SunnyNet

# 第一个代理配置
proxy_config_1 = {
    'type': 'socks5',
    'host': '36.111.32.147',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第二个代理配置
proxy_config_2 = {
    'type': 'socks5',
    'host': '14.22.79.198',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第一个VX实例的进程ID
weixin_pid_1 = 19908
weixin_appex_pids_1 = [2860, 16096, 24504, 24840]

# 第二个VX实例的进程ID
weixin_pid_2 = 27456
weixin_appex_pids_2 = [4996, 7664, 11448, 24264]

# 创建第一个SunnyNet实例
print("\n=== 创建第一个代理实例 ===")
sunny1 = SunnyNet()
sunny1.set_port(8889)  # 设置端口为8889
sunny1.set_drive_name("SunnyDrive1")  # 设置不同的驱动名称

if sunny1.start():
    print("✅ 第一个SunnyNet实例启动成功")
   
    # 加载第一个驱动
    if sunny1.open_drive(True):
        print("✅ 第一个SunnyNet驱动加载成功")
   
    # 构建代理URL
    proxy_type = proxy_config_1['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'
   
    host = proxy_config_1['host']
    proxy_port = proxy_config_1['port']
    username = proxy_config_1.get('username', '')
    password = proxy_config_1.get('password', '')
   
    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"
   
    print(f"设置上游代理: {proxy_url}")
   
    # 设置上游代理
    if sunny1.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")
        
        # 添加进程到代理
        if sunny1.process_add_pid(weixin_pid_1):
            print(f"✅ 添加进程成功: PID={weixin_pid_1}, 名称=WeChat.exe")
        else:
            print(f"❌ 添加进程失败: PID={weixin_pid_1}")
            print(f"错误信息: {sunny1.error()}")
        
        for pid in weixin_appex_pids_1:
            if sunny1.process_add_pid(pid):
                print(f"✅ 添加进程成功: PID={pid}, 名称=WeChatAppEx.exe")
            else:
                print(f"❌ 添加进程失败: PID={pid}")
                print(f"错误信息: {sunny1.error()}")
    else:
        print("❌ 上游代理设置失败")
        error = sunny1.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第一个SunnyNet实例启动失败")
    error = sunny1.error()
    print(f"错误信息: {error}")

# 等待一段时间,确保两个代理实例分开
time.sleep(2)

# 创建第二个SunnyNet实例
print("\n=== 创建第二个代理实例 ===")
sunny2 = SunnyNet()
sunny2.set_port(8888)  # 设置端口为8888
sunny2.set_drive_name("SunnyDrive2")  # 设置不同的驱动名称

if sunny2.start():
    print("✅ 第二个SunnyNet实例启动成功")

    # 加载第二个驱动
    if sunny2.open_drive(True):
        print("✅ 第二个SunnyNet驱动加载成功")

    # 构建代理URL
    proxy_type = proxy_config_2['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'

    host = proxy_config_2['host']
    proxy_port = proxy_config_2['port']
    username = proxy_config_2.get('username', '')
    password = proxy_config_2.get('password', '')

    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"

    print(f"设置上游代理: {proxy_url}")

    # 设置上游代理
    if sunny2.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")

        # 添加进程到代理
        if sunny2.process_add_pid(weixin_pid_2):
            print(f"✅ 添加进程成功: PID={weixin_pid_2}, 名称=WeChat.exe")
        else:
            print(f"❌ 添加进程失败: PID={weixin_pid_2}")
            print(f"错误信息: {sunny2.error()}")

        for pid in weixin_appex_pids_2:
            if sunny2.process_add_pid(pid):
                print(f"✅ 添加进程成功: PID={pid}, 名称=WeChatAppEx.exe")
            else:
                print(f"❌ 添加进程失败: PID={pid}")
                print(f"错误信息: {sunny2.error()}")
    else:
        print("❌ 上游代理设置失败")
        error = sunny2.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第二个SunnyNet实例启动失败")
    error = sunny2.error()
    print(f"错误信息: {error}")

# 验证代理设置
print("\n=== 验证代理设置 ===")
print("检查进程代理状态:")

# 检查第一个实例的进程
print(f"\n第一个实例进程状态 (PID {weixin_pid_1}):")
process_list_1 = sunny1.process_get_list()
if process_list_1:
    for proc in process_list_1:
        if proc['PID'] == weixin_pid_1:
            print(f"  ✅ 进程 {weixin_pid_1} 已成功添加到代理")
            break
    else:
        print(f"  ❌ 进程 {weixin_pid_1} 未在代理列表中")
else:
    print("  ❌ 无法获取进程列表")

# 检查第二个实例的进程
print(f"\n第二个实例进程状态 (PID {weixin_pid_2}):")
process_list_2 = sunny2.process_get_list()
if process_list_2:
    for proc in process_list_2:
        if proc['PID'] == weixin_pid_2:
            print(f"  ✅ 进程 {weixin_pid_2} 已成功添加到代理")
            break
    else:
        print(f"  ❌ 进程 {weixin_pid_2} 未在代理列表中")
else:
    print("  ❌ 无法获取进程列表")

print("\n=== 测试完成 ===")
print("两个VX实例分别使用不同的代理。")
print(f"第一个VX实例 (PID: {weixin_pid_1}) 使用代理: {proxy_config_1['host']}:{proxy_config_1['port']}")
print(f"第二个VX实例 (PID: {weixin_pid_2}) 使用代理: {proxy_config_2['host']}:{proxy_config_2['port']}")

# 保持程序运行,等待用户输入
input("\n按回车键退出并关闭代理...")

# 清理资源
print("\n=== 清理资源 ===")
sunny1.stop()
print("第一个代理实例已停止")
sunny2.stop()
print("第二个代理实例已停止")
print("所有资源已清理完毕")
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2025-8-20 00:04:13 | 显示全部楼层   河北省张家口市
import time
import logging
import sys
import importlib.util

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

# 导入SunnyNet模块
from SunnyNet.SunnyNet import SunnyNet

# 第一个代理配置
proxy_config_1 = {
    'type': 'socks5',
    'host': '36.111.32.147',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第二个代理配置
proxy_config_2 = {
    'type': 'socks5',
    'host': '14.22.79.198',
    'port': 0000,
    'username': '0000',
    'password': '0000'
}

# 第一个VX实例的进程ID
weixin_pid_1 = 19908
weixin_appex_pids_1 = [2860, 16096, 24504, 24840]

# 第二个VX实例的进程ID
weixin_pid_2 = 27456
weixin_appex_pids_2 = [4996, 7664, 11448, 24264]

# 创建第一个SunnyNet实例
print("\n=== 创建第一个代理实例 ===")
sunny1 = SunnyNet()
sunny1.set_port(8889)  # 设置端口为8889
sunny1.set_drive_name("SunnyDrive1")  # 设置不同的驱动名称

if sunny1.start():
    print("✅ 第一个SunnyNet实例启动成功")

    # 加载第一个驱动
    if sunny1.open_drive(True):
        print("✅ 第一个SunnyNet驱动加载成功")

    # 构建代理URL
    proxy_type = proxy_config_1['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'

    host = proxy_config_1['host']
    proxy_port = proxy_config_1['port']
    username = proxy_config_1.get('username', '')
    password = proxy_config_1.get('password', '')

    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"

    print(f"设置上游代理: {proxy_url}")

    # 设置上游代理
    if sunny1.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")

        # 添加进程到代理
        if sunny1.process_add_pid(weixin_pid_1):
            print(f"✅ 添加进程成功: PID={weixin_pid_1}, 名称=WeChat.exe")
        else:
            print(f"❌ 添加进程失败: PID={weixin_pid_1}")
            print(f"错误信息: {sunny1.error()}")

        for pid in weixin_appex_pids_1:
            if sunny1.process_add_pid(pid):
                print(f"✅ 添加进程成功: PID={pid}, 名称=WeChatAppEx.exe")
            else:
                print(f"❌ 添加进程失败: PID={pid}")
                print(f"错误信息: {sunny1.error()}")
    else:
        print("❌ 上游代理设置失败")
        error = sunny1.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第一个SunnyNet实例启动失败")
    error = sunny1.error()
    print(f"错误信息: {error}")

# 等待一段时间,确保两个代理实例分开
time.sleep(2)

# 创建第二个SunnyNet实例
print("\n=== 创建第二个代理实例 ===")
sunny2 = SunnyNet()
sunny2.set_port(8888)  # 设置端口为8888
sunny2.set_drive_name("SunnyDrive2")  # 设置不同的驱动名称

if sunny2.start():
    print("✅ 第二个SunnyNet实例启动成功")

    # 加载第二个驱动
    if sunny2.open_drive(True):
        print("✅ 第二个SunnyNet驱动加载成功")

    # 构建代理URL
    proxy_type = proxy_config_2['type'].lower()
    if proxy_type == 'socks5':
        proxy_type = 'socket5'

    host = proxy_config_2['host']
    proxy_port = proxy_config_2['port']
    username = proxy_config_2.get('username', '')
    password = proxy_config_2.get('password', '')

    if username and password:
        proxy_url = f"{proxy_type}://{username}:{password}@{host}:{proxy_port}"
    else:
        proxy_url = f"{proxy_type}://{host}:{proxy_port}"

    print(f"设置上游代理: {proxy_url}")

    # 设置上游代理
    if sunny2.set_proxy(proxy_url, 30000):
        print("✅ 上游代理设置成功")

        # 添加进程到代理
        if sunny2.process_add_pid(weixin_pid_2):
            print(f"✅ 添加进程成功: PID={weixin_pid_2}, 名称=WeChat.exe")
        else:
            print(f"❌ 添加进程失败: PID={weixin_pid_2}")
            print(f"错误信息: {sunny2.error()}")

        for pid in weixin_appex_pids_2:
            if sunny2.process_add_pid(pid):
                print(f"✅ 添加进程成功: PID={pid}, 名称=WeChatAppEx.exe")
            else:
                print(f"❌ 添加进程失败: PID={pid}")
                print(f"错误信息: {sunny2.error()}")
    else:
        print("❌ 上游代理设置失败")
        error = sunny2.error()
        print(f"错误信息: {error}")
else:
    print("❌ 第二个SunnyNet实例启动失败")
    error = sunny2.error()
    print(f"错误信息: {error}")

# 验证代理设置
print("\n=== 验证代理设置 ===")
print("检查进程代理状态:")

# 检查第一个实例的进程
print(f"\n第一个实例进程状态 (PID {weixin_pid_1}):")
process_list_1 = sunny1.process_get_list()
if process_list_1:
    for proc in process_list_1:
        if proc['PID'] == weixin_pid_1:
            print(f"  ✅ 进程 {weixin_pid_1} 已成功添加到代理")
            break
    else:
        print(f"  ❌ 进程 {weixin_pid_1} 未在代理列表中")
else:
    print("  ❌ 无法获取进程列表")

# 检查第二个实例的进程
print(f"\n第二个实例进程状态 (PID {weixin_pid_2}):")
process_list_2 = sunny2.process_get_list()
if process_list_2:
    for proc in process_list_2:
        if proc['PID'] == weixin_pid_2:
            print(f"  ✅ 进程 {weixin_pid_2} 已成功添加到代理")
            break
    else:
        print(f"  ❌ 进程 {weixin_pid_2} 未在代理列表中")
else:
    print("  ❌ 无法获取进程列表")

print("\n=== 测试完成 ===")
print("两个VX实例分别使用不同的代理。")
print(f"第一个VX实例 (PID: {weixin_pid_1}) 使用代理: {proxy_config_1['host']}:{proxy_config_1['port']}")
print(f"第二个VX实例 (PID: {weixin_pid_2}) 使用代理: {proxy_config_2['host']}:{proxy_config_2['port']}")

# 保持程序运行,等待用户输入
input("\n按回车键退出并关闭代理...")

# 清理资源
print("\n=== 清理资源 ===")
sunny1.stop()
print("第一个代理实例已停止")
sunny2.stop()
print("第二个代理实例已停止")
print("所有资源已清理完毕")

回复

使用道具 举报

结帖率:94% (316/335)
 楼主| 发表于 2025-8-20 00:05:54 | 显示全部楼层   广东省深圳市
huayuanderen 发表于 2025-8-20 00:04
import time
import logging
import sys

好像没有set_drive_name这个方法
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2025-8-20 00:07:37 | 显示全部楼层   河北省张家口市
A1392747874 发表于 2025-8-20 00:05
好像没有set_drive_name这个方法

按照思路自己修改一下  
回复

使用道具 举报

结帖率:94% (316/335)
 楼主| 发表于 2025-8-20 00:12:42 | 显示全部楼层   广东省深圳市
huayuanderen 发表于 2025-8-20 00:03
如果仍然无效,可以尝试:
使用不同的端口范围:

总是跟随着sunny1得代理
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2025-8-20 00:15:20 | 显示全部楼层   河北省石家庄市
A1392747874 发表于 2025-8-20 00:12
总是跟随着sunny1得代理

1.加载两次驱动
2.驱动改不同名字
回复

使用道具 举报

结帖率:94% (316/335)
 楼主| 发表于 2025-8-20 00:16:27 | 显示全部楼层   广东省深圳市
huayuanderen 发表于 2025-8-20 00:15
1.加载两次驱动
2.驱动改不同名字

他只能加载一次驱动加载第二次报错了
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2025-8-20 00:19:08 | 显示全部楼层   河北省石家庄市
A1392747874 发表于 2025-8-20 00:16
他只能加载一次驱动加载第二次报错了

估计是一个对象加载了两次。
回复

使用道具 举报

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

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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