![](/img/trans.png)
[英]Delphi/C#: WebBrowser socks5 proxy (with username/password auth)
[英]Automatically Setting Internet Explorer/Windows to use a Socks5 proxy using C#
我正在制作一個 SSH 隧道應用程序,需要能夠自動強制系統使用 HTTP 和 Socks5 代理,並使更改立即生效。 HTTP 代理現在由PoshHTTP 類完美處理,但我不知道如何用 SOCKS5 做同樣的事情。
我已經嘗試強制更改注冊表,但它們不會立即生效,而且不可靠。 在大多數情況下,我必須在設置生效之前打開 Internet 選項 > lan 設置,因此用戶此時最好手動設置代理。
有沒有辦法做到這一點,我錯過了? 如果我可以修改 poshHTTP 來做到這一點,那就太棒了,但我並不抱太大希望。
任何人來到這里想知道 Tor,這可能對你有用
public struct Struct_INTERNET_PROXY_INFO
{
public int dwAccessType;
public IntPtr proxy;
public IntPtr proxyBypass;
};
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
public static void RefreshProxy()
{
try
{
//RESTART TOR
Struct_INTERNET_PROXY_INFO struct_IPI;
struct_IPI.dwAccessType = 3;
struct_IPI.proxy = Marshal.StringToHGlobalAnsi("socks=127.0.0.1:9050");
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");
IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));
Marshal.StructureToPtr(struct_IPI, intptrStruct, true);
InternetSetOption(IntPtr.Zero, 38, intptrStruct, Marshal.SizeOf(struct_IPI));
}
catch (Exception){ }
}
在另一個論壇上尋求幫助后找到了解決方案。 最后,我能夠繼續使用我在其他地方使用的 PoshHTTP 類,而不是只傳遞 ip:port 像這樣使用它
PoshHttp.Proxies.SetProxy("socks=socks://$ip:$port");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.