读书人

求证一个过程一个代理的实现方式标题

发布时间: 2013-12-15 22:17:19 作者: rapoo

求证一个进程一个代理的实现方式,标题不长不显眼啊++
本帖最后由 xiaozhu39505 于 2013-12-02 14:43:45 编辑 大体需求是这样的,有一个主程序和执行任务的程序。
主程序可以启动多个执行任务的程序。执行任务的程序主要就是一个winform里有个webbrowser控件。要求实现每个执行任务的程序里的webbrowser都可以使用自己的代理IP去访问网页。多个执行任务的程序可以同时使用不同的代理。

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

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

或者大侠们有什么更好的实现思路,也不妨说说。在此谢谢了 API?HOOK webbrowser 每个进程单独代理
[解决办法]
不需要这样复杂吧,一般来说你会有一个UI事件触发Open URL的动作,之后它会去调用WebBrowser的Navigate方法实现页面的更新,这样你在UI事件触发的时候,去修改代理IP就可以了吧。

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

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

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

或者大侠们有什么更好的实现思路,也不妨说说。在此谢谢了

[解决办法]
看看QT的webkit控件有没有相关方法,那个是开源的,看看能不能改改。
[解决办法]
提醒:IE代理只对当前用户是全局的,而一台电脑可以同时登录好多个用户。
[解决办法]
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 用于逐屏显示帮助。


[解决办法]
Qt的QNetworkAccessManager类支持设置proxy
[解决办法]
一般浏览器插件(无论IE、webkit、gecko)都会给你个机会让你负责所有http通信的,比如二楼说的Navigate之类的。这样你就可以为所欲为了。

读书人网 >C++

热点推荐