工具-自动切换浏览器代理
2022-8-1 07:41:8 Author: 逆向OneByOne(查看原文) 阅读量:44 收藏

提示!本文章仅供学习交流,严禁用于非法用途,文章如有不当可联系本人删除!

一、switchymoega介绍

① 如果遇到会本地ip无法打开的网站,手动挂代理如果是短效的就比较麻烦,所以此次分享的是实现1分钟自动切换浏览器的代理,亦可实现指定域名使用代理

② SwitchyOmega 是一个可以对不同的网站分别使用不同的代理规则,实现的效果和PAC代理一致,但是给用户提供了更简单易用的交互界面,从而可以定制适用于自己的规则,更多介绍 https://www.jianshu.com/p/31b24ed5807c

③ 下载安装:https://www.chrome666.com/chrome-extension/proxy_switchyomega.html

有四种情景模式如图:常用的是代理服务器的模式,输入ip和port即可,由于代理服务器模式手动的填写代理ip比较麻烦,本次介绍的是PAC的情景模式,PAC的模式可以通过脚本文件自动切换代理ip,也可通过自动切换的模式选择性的对指定域名网站挂代理模式;这里的思路主要参考于https://www.nuomiphp.com/t/61cb4b3b2255a22c5b2a4972.html

二、PAC文件介绍

① PAC(proxy auto config)文件是纯文本文件,以.pac后缀,其实质为javascript脚本,只是为了指定一个特定的程序来解析;更多详细介绍参考文档https://www.it610.com/article/1278043702526230528.htm

② PAC文件中必须包含一个函数,FindProxyForURL(url, host);其中的url是用户输入的url,参数host是url中的主机名,最基本的代码结构如下

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

它的返回类型有三种,return 可以返回单种类型的

  • DIRECT 代表直接连网

  • PROXY 123.12.12.12:1221

  • SOCKS5 123.12.12.12:1221

function FindProxyForURL(url, host){
    return "DIRECT";
}
function FindProxyForURL(url, host{
    return "PROXY 192.168.1.1:1121";
}
function FindProxyForURL(url, host{
    return "SOCKS5 192.168.1.1:1121";
}

④ 也可以返回多种类型的,如下脚本的意思是,优先选择对所有URL都直接连,如果不能连接走HTTP连接,如果还是不能连接走SOCKS5连接

function FindProxyForURL(url, host{
    return "DIRECT; PROXY 192.168.1.1:1121; SOCKS5 192.168.1.1:1121";
}

⑤ 同时还可以对请求参数的url或者host进行过滤选择哪种类型连接

  • shExpMatch函数用来匹配url或者host

  • isInNet函数用来返回请求的host是否在指定的域内,isInNet的第二个参数必须是 IP,不能是主机名,因此需要把主机名转换成IP,比如"isInNet(host, dnsResolve(www.google.com), "255.255.255.0")"

function FindProxyForURL(url, host{
    if (shExpMatch(url, "*.google.com/*")) {
        return "PROXY 192.168.1.1:3128";
    }

    if (shExpMatch(url, "*.wikipedia.com:*/*")) {
        return "SOCKS5 lilinux.net:1080";
    }

    if (isInNet(host, "10.0.0.0""255.0.0.0")) {
        return "DIRECT";
    }
    return "DIRECT; PROXY 192.168.1.1:3128; SOCKS5 lilinux.net:1080";

}

三、switchomega自动1分钟切换代理操作

① 新建pac情景模式,pac文件, 并开启一个服务接口自动更新返回pac文件,每次自动更新时会主动调用服务切换代理


② 服务接口如下http://127.0.0.1:8000/proxy ,关于服务接口的代码在文档目录五,点击立即更新情景模式,则可实现pac文件返回,返回的pac文件内容如图中所示,最后点击应用选项则情景模式已创建成功

③ 设置1分钟自动切换代理,在通用这里选择更新间隔,最后点击应用选项使之生效,switchyomega默认是最低15分钟的间隔,所以我们可以对源码进行修改增加1分钟,5分钟的间隔,如何修改源码分钟在目录四有介绍

④ 如下选择创建好的pacc情景模式即可实现代理的切换


四、修改SwitchyOmega插件自动更新时间

① 手机端在微信公众号后台回复proxy,然后点击链接发送给好友,然后在切换到电脑端打开链接即可下载已经改好的安装包,或者按下面的步骤自己修改也可以

② 下载好的插件后缀名.crx改成.zip,然后解压后改如下文件"Proxy_SwitchyOmega_2.5.21\js\omega.js" 里面添加两个数字

③ 并将各个的"Proxy_SwitchyOmega_2.5.21\_locales\messages.json"文件也做如下修改,新增1分钟和5分钟的选项"options_downloadInterval_1":{"message":"1分钟"},"options_downloadInterval_5":{"message":"5分钟"},

④ 然后打开谷歌浏览器,重新加载已经修改好的插件

④ 最终通用界面即可实现1分钟和5分钟的选项切换


五、服务接口更新pac文件代码

① 如下是直接用fastapi写了个服务接口,新建了一个fastproxy.py文件,则对应启动命令为uvicorn fastproxy:app --reload  --host 127.0.0.1 ;其中有个switch_mf_proxy(True)方法是获取代理的自我编写

# -*- coding: utf-8 -*-
# @Time: 2022/7/15
# @Author: Shirmay
# fastproxy.py
"""
1、安装pip
    ● pip install fastapi[all] -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
    ● http://127.0.0.1:8000/docs 是各个接口的可视化界面,可以看到各个接口的请求参数,点击try it out然后excute
2、在当前文件路径cmd窗口按如下启动服务,可以边在修改代码的时候服务自动响应
    uvicorn fastproxy:app --reload  --host 127.0.0.1
3、接着打开http://127.0.0.1:8000/proxy,正常返回数据就代表服务就启动好了
"""

import uvicorn
from fastapi import FastAPI
from fastapi.responses import FileResponse
from proxy import switch_mf_proxy
app = FastAPI()

@app.get("/proxy")
def index():
    proxy = switch_mf_proxy(True)
    text = """function FindProxyForURL(url, host) {
    return "PROXY %s"
}"""
 % proxy
    with open('proxy.pac'"w", encoding='utf-8'as f:
        f.write(text)
    return FileResponse('proxy.pac')

if __name__ == '__main__':
    uvicorn.run("fastproxy:app",  host='127.0.0.1')

六、文章推荐

①https://www.jianshu.com/p/31b24ed5807c

②https://www.nuomiphp.com/t/61cb4b3b2255a22c5b2a4972.html

③https://www.it610.com/article/1278043702526230528.htm


文章来源: http://mp.weixin.qq.com/s?__biz=MzU5NTcyMDc1Ng==&mid=2247485327&idx=1&sn=f8e996669c9cb1a66e8565715a22e07a&chksm=fe6ce8d4c91b61c2c2e033b927388bf8d03939b9b91467e88ca50a012625e4bf345c6fcbcb29#rd
如有侵权请联系:admin#unsafe.sh