Proxomitron入门级应用之:代理调度

新手入门、经验交流

Moderator: cre

Forum rules
  • 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
  • 提问前请先查阅软件帮助文件和论坛相关讨论
  • 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
  • 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
Ray4
Moderator
Posts: 65
Joined: Dec 30 2007, 09:37

Proxomitron入门级应用之:代理调度

Post by Ray4 »

关于proxomitron的代理调度:
我是个懒人,不喜欢到处找代理,连在线代理也不想用,就只好用tor了(既然懒,就只好牺牲速度)。我用的是somh的tor便携版,设为开机自动运行

在proxomitron里添加tor的代理地址:
torproxy.png
torproxy.png (110.29 KiB) Viewed 44122 times
torheader.png
torheader.png (138.79 KiB) Viewed 44145 times
这里有2个命令(这个贴子里转了别人翻译的帮助,不想看英文的可以这里看一下):
$LST(blockfile name)
限制: 无限制
过滤类型: All
作用:引入 blockfile 文件(在config里添加即可),可使用在任何的 "matching expression" 上,并且会每行一条规则来匹配直到找到相符的过滤条件。

$SETPROXY(remote.proxy.name[:port])
限制: 匹配和替换
过滤类型: OUT header filters only
$SETPROXY 命令可以强制使用特定的代理来连接。用它,你可以指定哪些URL使用当前代理,即便是你启用了proxomitron的 "Use remote proxy" 选项。它在某些特定网址或安全考虑下是非常有用的。代理地址必须要先在 "External Proxy Selector" 的列表中加入。
这个要在out前面打勾,因为浏览器要访问一个地址肯定是出去的地址,proxomitron会检查此地址是否符合代理的规则,符合则调用代理

接下来就要在你的blocklist里添加地址了,打开lists文件夹下的tor.txt(你也可以用其它名字),添加以下三行

Code: Select all

# Google
*.googlepages.com/*
pages.google.com/*

# wiki
\w.wikipedia.org/*

# opera
my.opera.com/*

# proxomitron
*.proxomitron.info/*

#! -------- feedburner -------------
# 很多网站都是用的feedburner,使用的过程中发现这些feed都被过滤了,实际这些网站本身并没有被过滤
# feedburner的feed此时相当于只是一个跳转,当proxomitron发现要访问此feed时会调用代理,一旦访问成
# 功则会自动转到具体的网站如pcworld,而pcworld并不在我的代理访问的列表里,所以又会按正常的方式访问
# 如果单纯用GB、MT、TW的代理功能,少的话还可以手动一下,多了就不是很方便了; firefox则需安装插件
# 来实现
feeds.feedburner.com/*
feeds.*/(~r/*/~(3|4)/*|~f/*\?i=)
注意:如果你修改了blocklist文件,最好手动点击proxomitron的reload lists,让它重新加载一下
这样我就可以无视浏览器本身的代理功能,更不用安装插件了,缺点就是用tor比较慢,你有快而且稳定的代理,用这个方法可是相当实用,至少不用手动的来回切换代理
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Proxomitron入门级应用之:代理调度

Post by phoenix »

Ray4的例子描述了如何针对某些网站自动使用代理,但我们知道,很多时候,不同代理访问不同网站的速度是不一样的,还有些时候,某些网站必须使用特定的代理才能访问,那么,我们是否能实现针对不同网站使用不同代理呢?

答案是肯定的。以Ray的blocklist文件为例,如果我们在每个网站的后面通过$SET()函数将需要指定的代理服务器赋予一个变量,然后在http header规则中,让$SETPROXY()函数使用这个变量,不就可以实现我们的目标了吗?这里我不给出具体的实现方法,有兴趣的同学可以自行尝试。

BTW,sidki的config set已内置了此功能,具体设置可以参考这里
silverio
Posts: 3
Joined: Aug 29 2008, 14:53

Re: Proxomitron入门级应用之:代理调度

Post by silverio »

像一般浏览器在设定代理的时候应该说算是全局代理吧!也就是说所有连结都是通过代理
但是我用代理调度的时候看了一下log发现

正常:
Using Proxy - 127.0.0.1:10000
GET http://mat1.qq.com/www/iskin/skin4/expotclogo.gif HTTP/1.1
这个却没有走代理!
+++GET 2026+++
GET /www/iskin09/s01/s_bg.png HTTP/1.1
Accept: */*
Referer: http://www.qq.com/
附上目前的规则

Code: Select all

[HTTP headers]
In = FALSE
Out = TRUE
Key = "Auto Proxy (out) 
URL = "$LST(URL-Proxy)"
URL-Proxy内容

Code: Select all

*.qq.com/$SETPROXY(127.0.0.1:10000)
现在有个问题就是能否连从Referer符合条件的都走同一个代理?
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Proxomitron入门级应用之:代理调度

Post by phoenix »

silverio wrote: 这个却没有走代理!
这是因为,根据你的规则,只有当 URL 中包含 *.qq.com/ 时,才使用上级代理。
silverio wrote: 现在有个问题就是能否连从Referer符合条件的都走同一个代理?
可以,针对 Referer: 编写规则即可。
silverio
Posts: 3
Joined: Aug 29 2008, 14:53

Re: Proxomitron入门级应用之:代理调度

Post by silverio »

可以了!!感恩!!
我把文件内容改成

*qq.com/$SETPROXY(127.0.0.1:10000)
$OHDR(Referer:*qq.com)$SETPROXY(127.0.0.1:10000)

可以...............
lartiger
Posts: 3
Joined: Dec 22 2009, 15:50

Re: Proxomitron入门级应用之:代理调度

Post by lartiger »

有没有针对IP地址的规则
就是类似pac文件里isinnet函数的
对解析以后的地址,使用不同的代理

比如教育网内对国外的IP才用代理
ddbb
Moderator
Posts: 425
Joined: Jan 07 2008, 13:30

Re: Proxomitron入门级应用之:代理调度

Post by ddbb »

是这样的....你访问一个网址..发出请求后 prox会判断 然后决定会不会用代理 然后才发出你的电脑....

网上的路由才会跟据你电脑出来的请求查找对应的服务器IP.....

也就是说 除非你是用IP来发请求 如果是用网址发请求的话 是不能用IP地址的方法来指定的
lartiger
Posts: 3
Joined: Dec 22 2009, 15:50

Re: Proxomitron入门级应用之:代理调度

Post by lartiger »

对有些IP段,直连能连上,而有些是使用代理后才能连上
类似的,我希望prox在解析出域名对应的IP后,按解析后的IP来调度连接时使用的代理。
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Proxomitron入门级应用之:代理调度

Post by phoenix »

lartiger wrote: 有没有针对IP地址的规则
就是类似pac文件里isinnet函数的
对解析以后的地址,使用不同的代理
把能实现这个功能的 PAC 文件发上来看看?
lartiger wrote:我希望prox在解析出域名对应的IP后,按解析后的IP来调度连接时使用的代理。
prox 做不到这点。
lartiger
Posts: 3
Joined: Dec 22 2009, 15:50

Re: Proxomitron入门级应用之:代理调度

Post by lartiger »

http://windtear.net/archives/2007/04/23/001216.html
从中截取一部分:

Code: Select all

function FindProxyForURL(url, host)
{
if(isPlainHostName(host))  return "DIRECT";
else if(isResolvable(host)) {
if(isInNet(host,"127.0.0.0","255.0.0.0"))  return "DIRECT";
else if(isInNet(host,"10.0.0.0","255.0.0.0"))  return "DIRECT";
else if(isInNet(host,"172.16.0.0","255.240.0.0"))  return "DIRECT";
else if(isInNet(host,"192.168.0.0","255.255.0.0"))  return "DIRECT";
else if(isInNet(host,"159.226.0.0","255.255.0.0"))  return "DIRECT";
else if(isInNet(host,"162.105.0.0","255.255.0.0"))  return "DIRECT";
else if(isInNet(host,"166.111.0.0","255.255.0.0"))  return "DIRECT";
else return "PROXY xxx.yyy.zzz:PORT";
}
else return "DIRECT";
}
Post Reply