windows-8 – 如何在Windows 8.1(IE11和Modern UI)上调试PAC(代理自动配置)?

在较旧的系统(如 Windows 7 IE10)上,在PAC文件调用“alert()”会导致显示对话框.但是,在Windows 8.1中,即使IE11似乎正在使用PAC,也不会显示任何对话框.

我目前的情况是IE11可以使用(SOCKS)代理(由PAC返回)就好了,但现代UI应用程序与Internet完全断开连接.似乎IE11和Modern UI对PAC设置的处理方式不同,但我找不到调试它的方法.

总之,我的问题是

>如何在Windows 8.1上使用IE11调试PAC?
>如何在Windows 8.1上使用Modern UI调试PAC?

IE11 PAC文件更改

Microsoft对IE11如何处理本地PAC文件进行了更改.你可以阅读它们here或参见下面的一些快速信息.

另请注意,alert()语句不再适用于Windows 8.

With IE11,the usage of a PAC-file through the file-protocol is no
more possible,unless you add the following registry-key:

[HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings]
(DWORD)"EnableLegacyAutoproxyFeatures"=1

Note: alert-statements will no more appear when using Windows 8 or
higher!

使用AutopROX的DEBUG PAC文件(Download Link)

Sometimes you need just to test your PAC-file,if the expected route
is returned,although you have no access to the website in question.
For such testing you can use the (attached) command line-utility tool
autoprox.exe,created by Pierre-Louis Coll.

When starting it in a CMD without additional parameter the usage is
displayed:

C:\temp>autoprox
Version : 2.1.0.0
Written by pierrelc@microsoft.com
Usage : AutopROX -s  (calling DetectAutoproxyUrl and saving wpad.dat file in temporary file)
Usage : AutopROX  [-h] url [Path to autoproxy file]
       -h: calls InternetinitializeAutoproxyDll with helper functions implemented in AutopROX
AutopROX url: calling DetectAutoproxyUrl and using WPAD.DAT logic to find the proxy for the url
AutopROX url path: using the autoproxy file from the path to find proxy for the url
Example: autoprox -s
Example: autoprox http://www.microsoft.com
Example: autoprox -h http://www.microsoft.com c:\inetpub\wwwroot\wpad.dat
Example: autoprox http://www.microsoft.com http://proxy/wpad.dat

Here is the output with our sample:

C:\temp>autoprox http://us.msn.com c:\temp\sample.pac
The Winsock 2.2 dll was found okay
url: http://us.msn.com
autoproxy file path is : c:\temp\sample.pac
Calling InternetinitializeAutoproxyDll with c:\temp\sample.pac
        Calling InternetGetProxyInfo with url http://us.msn.com and host us.msn.com
        Proxy returned for url http://us.msn.com is:
PROXY myproxy:80;

When you want to see which DNS-related functions have been called,you can use the parameter “-h” in addition: Here the output,when
this is used:

C:\temp>autoprox -h http://us.msn.com c:\temp\sample.pac
The Winsock 2.2 dll was found okay
Will call InternetinitializeAutoproxyDll with helper functions
url: http://us.msn.com
autoproxy file path is : c:\temp\sample.pac
Calling InternetinitializeAutoproxyDll with c:\temp\sample.pac
        Calling InternetGetProxyInfo with url http://us.msn.com and host us.msn.com
ResolveHostByName called with lpszHostName: us.msn.com
ResolveHostByName returning lpszIPAddress: 65.55.206.229
        Proxy returned for url http://us.msn.com is:
PROXY myproxy:80;

Error-Handling in autoprox.exe:

  1. When you specify a non-existing PAC-file (e.g. typo in the command-line),the result from autoprox.exe will be:

    ERROR: InternetinitializeAutoproxyDll Failed with error number 0x6 6.

  2. When the Pac-file contains Syntax-errors,you typically receive the following message displayed:

    ERROR: InternetGetProxyInfo Failed with error number 0x3eb 1003.

After finishing the local test,the PAC-file should be copied to the webserver where it will be accessed through http-protocol.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...