在不使用C模块的情况下在Python中解析PAC文件

时间:2014-11-13 14:21:33

标签: python python-2.7 pac

我处于棘手的情况,我无法使用pacparser库,我希望有人有一个纯python解决方案(没有C / c ++模块)。

我有一个PAC文件,它返回了多个代理:

function FindProxyForURL(url,host)
{
if (isPlainHostName(host))
{ return "DIRECT"; }

#// Internal network Hosts 
if (isInNet(host, "158.232.0.0", "255.255.0.0") || isInNet(host, "127.0.0.1", "255.255.255.255")|| isInNet(host, "10.0.0.0", "255.0.0.0"))
{ return "DIRECT"; }

#// Connect through proxy server for all other hosts. If proxy server is not available, connect directly
return "PROXY proxy.site.com:3128; PROXY proxy02.site.com:3128; PROXY proxy05.site.com:3128; PROXY proxy03.site.com:3128; PROXY proxy04.site.com:3128";

}

我如何仅使用python解析这个问题,以及判断哪个代理已启动的最佳方法是什么?

谢谢你并考虑到学院! :)

1 个答案:

答案 0 :(得分:1)

我创建了一个名为PyPAC的纯Python库,它应该可以满足您的需求。它提供了requests.Session的子类,其中包括荣誉PAC并包括PAC自动发现。

在内部,它使用Js2Py,一个解析和执行JavaScript的Python库。然后,PyPAC具有PAC规范所需的各种JavaScript函数的Python实现。