求证一个进程一个代理的实现方式,标题不长不显眼啊++

飞小猪 2013-12-02 02:39:25
大体需求是这样的,有一个主程序和执行任务的程序。
主程序可以启动多个执行任务的程序。执行任务的程序主要就是一个winform里有个webbrowser控件。要求实现每个执行任务的程序里的webbrowser都可以使用自己的代理IP去访问网页。多个执行任务的程序可以同时使用不同的代理。

我的思路是去hook执行任务程序的通信API,并修改通信的目的IP地址为代理IP,目前这是我唯一思路

我是做c#的,消息hook做过,对api hook不太了解,搜了不少资料,说是需要hook某个dll的方法,并且修改文件头让它跳转到我们写的方法里面。这种方式不知道C#好不好做。哎。。

或者大侠们有什么更好的实现思路,也不妨说说。在此谢谢了
...全文
4318 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞小猪 2013-12-09
  • 打赏
  • 举报
回复
木有人做过吗?
飞小猪 2013-12-05
  • 打赏
  • 举报
回复
引用 13 楼 binbin846 的回复:
哥们,我也在研究呢,做sock5代理的,愁呢
没研究过sock5,sock5能实现一个进程一个代理的功能吗?
飞小猪 2013-12-05
  • 打赏
  • 举报
回复
引用 14 楼 xiaozhu39505 的回复:
[quote=引用 13 楼 binbin846 的回复:] 哥们,我也在研究呢,做sock5代理的,愁呢
没研究过sock5,sock5能实现一个进程一个代理的功能吗?[/quote] 刚才去查了一下,sock5能实现一个进程一个代理,不过我的代理IP貌似都是HTTP代理的。 而且sock5如果要用的话,还得自己去开发一个代理客户端啊
binbin846 2013-12-04
  • 打赏
  • 举报
回复
哥们,我也在研究呢,做sock5代理的,愁呢
飞小猪 2013-12-03
  • 打赏
  • 举报
回复
引用 10 楼 dyw 的回复:
Qt的QNetworkAccessManager类支持设置proxy
QWebKit有支持.net的浏览器控件么,求一个下载地址,谢谢
Todd_Pointer 2013-12-02
  • 打赏
  • 举报
回复
一般浏览器插件(无论IE、webkit、gecko)都会给你个机会让你负责所有http通信的,比如二楼说的Navigate之类的。这样你就可以为所欲为了。
dyw 2013-12-02
  • 打赏
  • 举报
回复
Qt的QNetworkAccessManager类支持设置proxy
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
其他大侠还有什么实现思路么
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
CreateProcessAsUser ......
谢谢分享,回头我试试哈
赵4老师 2013-12-02
  • 打赏
  • 举报
回复
CreateProcessAsUser C:\>net help user 此命令的语法是: NET USER [username [password | *] [options]] [/DOMAIN] username {password | *} /ADD [options] [/DOMAIN] username [/DELETE] [/DOMAIN] NET USER 用于创建和修改计算机上的用户帐户。当不带选项使用本命令时, 它会列出计算机上的用户帐户。用户帐户的信息存储在用户帐户数据库中。 该命令仅在服务器上运行。 username 指需要进行添加、删除、修改或者浏览的用户帐户的名字。用户帐 户的名字不能超过 20 个字符。 password 分配或改变用户帐户的密码。密码必须满足 NET ACCOUNTS 命令的 /MINPWLEN 选项指定的最小长度的要求。它至多可以具有 14 个字符。 * 提示输入密码。当用户在密码提示符下输入时,密码是不会显示的。 /DOMAIN 在当前域的主域控制器上执行操作。 /ADD 将用户帐户添加到用户帐户数据库中。 /DELETE 从用户帐户数据库中删除用户帐户。 Options 如下所示: Options 描述 -------------------------------------------------------------------- /ACTIVE:{YES | NO} 激活或停用帐户。如果帐户处于停用状态,用户 就不能访问该服务器。该选项的默认值是 YES。 /COMMENT:"text" 提供关于用户帐户的一个描述性注释。需要将文本 括在引号中。 /COUNTRYCODE:nnn 使用操作系统的国家/地区代码来实施用户的帮助 和错误消息的特定语言文件。0 表示默认的国家/地 区代码。 /EXPIRES:{date | NEVER} 如果日期被设置,就会引起帐户过期。设置NEVER, 对帐户就没有时间上的限制。根据国家/地区代码的 不同,有效日期的格式可以是月/日/年或日/月/年。 月可以是一个数字,拼写完整的或三个字母的缩写。 年可以是两位或四位数字。使用斜线(/)(没有空格) 来分隔日期的各个部分。 /FULLNAME:"name" 是一个用户的完整名字(而不是用户名)。需要把名字 用引号括起来。 /HOMEDIR:pathname 设置用户的主目录的路径。路径必须已经存在。 /PASSWORDCHG:{YES | NO} 指定用户是否可以改变自己的密码。其默认值是 YES。 /PASSWORDREQ:{YES | NO} 指定用户的帐户是否必须具有密码。其默认值是 YES。 /PROFILEPATH[:path] 为用户的登录配置文件设置路径。 /SCRIPTPATH:pathname 指用户的登录文件所在的位置。 /TIMES:{times | ALL} 指用户可以登录的时间。TIMES 的表达方式是 day[-day][,day[-day]],time[-time][,time[-time]], 增量限制在 1 小时。天可以是全部拼写或缩写。小时 可以是 12 小时或 24 小时制。对于 12 小时制,可 以使用 AM,PM。ALL 表示用户总是可以登录。空值表 示用户永远不能登录。可以使用逗号分隔天和时间项, 并用分号分隔多个天和时间项。 /USERCOMMENT:"text" 让管理人员添加或改变帐户的用户注释。 /WORKSTATIONS:{computername[,...] | *} 列出至多8个用户可以登录到网络上的计算机。 如果 /WORKSTATIONS 没有列表或列表是 *, 用户就可以从任何一台计算机上登录。 NET HELP command | MORE 用于逐屏显示帮助。
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
提醒:IE代理只对当前用户是全局的,而一台电脑可以同时登录好多个用户。
谢谢分享,不过这个软件最终要运行在客户机上的,主程序启动多少个执行任务的程序是可以设置的,如果用户不够也不行啊。虽然可以多用户同时登陆,但是密码我不知道啊,也没法以那个用户的权限去运行执行任务的程序吧。
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 3 楼 ADF1230 的回复:
看看QT的webkit控件有没有相关方法,那个是开源的,看看能不能改改。
webkit我没试过,不过火狐的gecko我试过,没有找到代理功能。 火狐的代理也是靠第三方代理客户端+插件实现的代理, 谷歌浏览器是webkit内核,也没有代理功能啊,也得借助第三方软件实现的吧
赵4老师 2013-12-02
  • 打赏
  • 举报
回复
提醒:IE代理只对当前用户是全局的,而一台电脑可以同时登录好多个用户。
神-气 2013-12-02
  • 打赏
  • 举报
回复
看看QT的webkit控件有没有相关方法,那个是开源的,看看能不能改改。
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
不需要这样复杂吧,一般来说你会有一个UI事件触发Open URL的动作,之后它会去调用WebBrowser的Navigate方法实现页面的更新,这样你在UI事件触发的时候,去修改代理IP就可以了吧。
不行的,WebBrowser要改代理只能修改IE的代理,而IE代理是全局的,你在一个程序里修改之后,其他IE都会使用这个代理了。达不到每个进程单独代理的目的
图灵狗 2013-12-02
  • 打赏
  • 举报
回复
不需要这样复杂吧,一般来说你会有一个UI事件触发Open URL的动作,之后它会去调用WebBrowser的Navigate方法实现页面的更新,这样你在UI事件触发的时候,去修改代理IP就可以了吧。
引用 楼主 xiaozhu39505 的回复:
大体需求是这样的,有一个主程序和执行任务的程序。 主程序可以启动多个执行任务的程序。执行任务的程序主要就是一个winform里有个webbrowser控件。要求实现每个执行任务的程序里的webbrowser都可以使用自己的代理IP去访问网页。多个执行任务的程序可以同时使用不同的代理。 我的思路是去hook执行任务程序的通信API,并修改通信的目的IP地址为代理IP,目前这是我唯一思路 我是做c#的,消息hook做过,对api hook不太了解,搜了不少资料,说是需要hook某个dll的方法,并且修改文件头让它跳转到我们写的方法里面。这种方式不知道C#好不好做。哎。。 或者大侠们有什么更好的实现思路,也不妨说说。在此谢谢了

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧