通过Windows命令行设置代理,包括登录参数

jav*_*web 21 windows proxy cmd winhttp netsh

我想通过命令行设置代理,我发现的第一件事是你必须运行具有管理员权限的命令行 - 然后基本代理集将是:

netsh winhttp set proxy SERVER:PORT
Run Code Online (Sandbox Code Playgroud)

这很好用,但我也想添加一个登录名.你可以看到我尝试过使用netsh-> winhttp,但是手册没有说明登录部分,所以我试过:

netsh winhttp set proxy user:password@SERVER:PORT
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这不起作用.是否有可能在netsh-> winhttp中实现这样的目标?

如果是这样,怎么样?如果不是=>我应该遵循哪些Windows命令?
或者这更容易̶a̶c̶h̶i̶e̶v̶e̶a̶b̶l̶e̶通过一些WINDOWSAPI̶(例如,使用C/C + +̶̶)̶?̶

感谢您的帮助,如果不清楚,请随时提出任何问题.

使用:Windows 7,cmd.exe,netsh-> winhttp

编辑:这看起来像C++方式:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383144(v=vs.85).aspx,但更好的方式C++可能会去这样:http://msdn.microsoft.com/en-us/library/windows/desktop/aa385384(v = vs.85).aspx#general_option, - 所以剩下的问题是如何在命令行中实现这一点(甚至更好的命令行 - > netsh-> winhttp)?

Chi*_*may 24

如果您使用的是Microsoft Windows环境,那么你可以设置一个命名变量HTTP_PROXY,FTP_PROXYHTTPS_PROXY根据要求.

我使用以下设置允许我在Windows命令提示符下的命令使用浏览器代理访问互联网.

set HTTP_PROXY=http://proxy_userid:proxy_password@proxy_ip:proxy_port
Run Code Online (Sandbox Code Playgroud)

右侧的参数必须替换为实际值.

一旦HTTP_PROXY设置了变量,在Windows命令提示符下执行的所有后续命令都将能够通过代理访问互联网以及提供的身份验证.

此外,如果您还想使用ftp和https来使用相同的代理,那么您可能也喜欢以下环境变量.

set FTP_PROXY=%HTTP_PROXY%

set HTTPS_PROXY=%HTTP_PROXY%
Run Code Online (Sandbox Code Playgroud)


小智 14

指令

通过socks代理隧道传输您的所有互联网流量:

netsh winhttp set proxy proxy-server="socks=localhost:9090" bypass-list="localhost"
Run Code Online (Sandbox Code Playgroud)

查看当前的代理设置:

netsh winhttp show proxy
Run Code Online (Sandbox Code Playgroud)

清除所有代理设置:

netsh winhttp reset proxy
Run Code Online (Sandbox Code Playgroud)


ove*_*wed 7

IE可以设置用户名和密码代理,因此可以在那里设置并导入确实有效

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d name:port
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyUser /t REG_SZ /d username
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyPass /t REG_SZ /d password
netsh winhttp import proxy source=ie
Run Code Online (Sandbox Code Playgroud)

  • **发现:**代理通过这些注册表获取**仅**在运行任何浏览器时,**但**netsh winhttp仍然显示直接访问,禁用代理也需要将注册表更改`ProxyEnable`为`0`* *和**之后重新启动浏览器。(顺便说一句:我的提示是发送带有 /f 参数的 reg add 命令,以便在不询问的情况下重写现有条目) (2认同)
  • **剩下的问题:**即使代理已设置,代理***身份验证也未设置***...因此它无法解决预身份验证问题. (2认同)

Kid*_*rla 6

根据我的经验,解决此问题的最佳方法是使用cntlm,它是指向远程身份验证代理的本地无身份验证代理.然后,您可以将WinHTTP设置为指向本地CNTLM(通常是localhost:3128),并且可以将CNTLM本身设置为指向远程认证代理.CNTLM有一个"神奇的NTLM方言检测"选项,可以生成密码哈希值,放入CNTLM配置文件中.