本文原创,转载请注明出处
WebBrowser简单易用,少量代码可以实现不错的功能,但貌似没有一个完美的方法设置代理
可以设置全局代理,通过注册表或者函数修改IE代理,但这样无法实现同时多个WebBrowser使用不同代理,影响其他浏览程序的代理设置
使用过滤器有些复杂,对不不熟悉的人使用不方便
WebBrowser 浏览最终还是调用的Wininet
而Wininet 可以设置代理并且不影响全局,需要一个HINTERNET 句柄,GOOGLE了半天也没找到这个句柄是WebBrowser的哪个字段,逆向之发现WebBrowser根本没有存储这个句柄,而是在urlmon.dll的全局变量中,而且所有的WebBrowser都使用这一个根句柄
既然WebBrowser没有,那只有自己想办法了
HOOK InternetConnect,得到句柄直接设置代理,可以根据目标IP,或者线程ID来选择设置哪个代理