IDC代理中心是用php+mysql开发的IDC代理平台源码。
使用说明:
所有用户须先注册账号并提交至官网客服开通代理权限。 如果您已经是代理,则无需开通代理。
代理平台基于PHP和MySQL开发,可同时在Windows、Linux、Unix平台上使用。 环境要求如下:
Windows平台
正式版需要PHP5.3及以上版本支持,MySQL5.0以上版本支持
建议使用科科官方提供的集成开发包(KKServ集成安装包)代理网站源码,以达到最佳性能。
Linux/Unix平台
正式版需要PHP5.6及以上版本支持,MySQL5.0以上版本支持
推荐平台:Linux + Nginx1.5/1.6.1 + PHP5.2以上 + MySQL5.0以上
支持平台:Linux + Apache2.2/2.4 + PHP5.2以上 + MySQL5.0以上
关于假装成工作人员的最新说明
防范措施:
1、代理免费代理网站源码,有独立平台。 那些收费的都是骗子。
2.交易仅在平台进行,请勿线下汇款。
3、如代理商擅自转让客户产品,请联系版本更新说明txt中的工作人员QQ进行核实。
【友情提醒】:我们不在乎别人怎么说我们,我们需要的是进步,无视愤青! 我们的发展离不开支持我们的人们。
IDC代理中心更新日志:
版本号:v6.0.18
注:应监管部门要求,平台将要求用户进行实名认证。 本次更新将强制用户进行实名认证。
版本号:v6.0.17
说明:更新网站设置BUG,网盘暂时无法使用,更新下载地址
版本号:v6.0.16
这是我参加庚文挑战赛的第五天。 活动详情请查看:耿文挑战赛
当本地后端代码尝试与前端套接字连接时,我们经常使用Webpack devserver等工具来配置代理:
// webpack.config.js
module.exports = {
//...
devServer: {
proxy: {
'/api': 'http://localhost:3000',
},
},
};
每个配置更改都需要重新启动才能生效。 其实没必要这么麻烦。 如果您使用Chrome进行调试,只需使用Chrome提供的代理套接字即可轻松配置和更改代理并立即生效!
Chrome插件市场中有很多这样的插件网站代理源码,比如ProxySwitchyOmega:
自己制作也很容易,我们只需要:
在v2扩展中,有两个socket可以实现代理效果:
代理套接字 webRequest 套接字
各有优缺点,使用场景也略有不同。 让我们看看如何通过两种方式做到这一点:
使用代理套接字
代理socket的灵活性不如webRequest,只能指定代理的目标服务器地址(域名或IP)。但性能更好。
清单.json 配置
{
"name": "PowerProxy",
"description": "",
"manifest_version": 2,
"version": "1.0.0",
"permissions": [
"storage",
"proxy",
"background",
"http://localhost/*"
],
"icons": {
"32": "32.png",
"64": "64.png",
"128": "128.png"
},
"browser_action": {
"default_icon": "32.png",
"default_title": "PowerProxy"
},
"background": {
"scripts": ["background.js"],
"persistent": true
}
}
上面除了名称描述、版本等基本信息之外,不仅声明了以下权限:
代理配置页面
这里我们使用一个粗略的纯 HTML 示例来创建一个表单来填写代理配置的 JSON:
<html>
<head></head>
<body>
<form id="form" action="#" onsubmit="javascript:save()">
<textarea name="rules" rows="30"></textarea>
<p id="buttons">
<input type="submit" value="Save" />
</p>
</form>
<script type="text/javascript">
var form = document.getElementById('form')
var rulesField = document.getElementById('id')
chrome.storage.local.get(['rules'], ({ rules }) => {
form.rules.value = JSON.stringify(rules)
})
function save(e) {
chrome.storage.local.set(
{
rules: form.rules.value,
},
() => null
)
return false
}
</script>
</body>
</html>
这里我们使用Chrome的localstorage来存储配置网站代理源码,后面background.js可以从中读取配置来执行相应的操作。 这里我存储为文本类型,也可以选择直接存储为JS对象类型。
预期的配置 JSON 格式如下:
[{
"url": "http://localhost:8000/api/a",
"proxy": "http://www.example.com"
}]
但我们是从上到下匹配的,即第一个配置的优先级最高。
background.js 窃听触发代理
创建完配置页面后,我们还需要一个入口来打开这个页面。 这里我使用Chrome的browseraction,即右上角地址栏旁边的小图标作为入口,点击background.js中的storm打开页面:
chrome.browserAction.onClicked.addListener(() => {
chrome.tabs.create({
url: chrome.runtime.getURL('index.html'),
active: true
},
() => null
});
然后根据我们的配置JSON调整浏览器代理设置:
chrome.storage.onChanged.addListener((changes) => {
const { newValue: rules } = changes.rules;
var config = {
mode: "pac_script",
pacScript: {
data: `
const rules = ${rules};
function FindProxyForURL(url, host) {
const rule = rules.find(rule => url.startsWith(rule.url));
if (rule) {
return 'PROXY ${rule.proxy}';
}
return 'DIRECT';
}
`
}
};
chrome.proxy.settings.set(
{ value: config, scope: 'regular' },
function() {}
);
});
使用 webRequest 套接字重定向
webRequest的性能比较差,但是非常灵活,更容易使用。
清单.json 配置
{
"name": "PowerProxy",
"description": "",
"manifest_version": 2,
"version": "1.0.0",
"permissions": [
"storage",
"webRequest",
"webRequestBlocking",
"background",
"http://localhost/*"
],
"icons": {
"32": "32.png",
"64": "64.png",
"128": "128.png"
},
"browser_action": {
"default_icon": "32.png",
"default_title": "PowerProxy"
},
"background": {
"scripts": ["background.js"],
"persistent": true
}
}
上面除了名称描述、版本等基本信息之外,不仅声明了以下权限:
代理配置页面
这部分与使用代理套接字完全相同。
background.js 窃听触发代理
不仅要处理background.js中的browserAction,我们还需要拦截chrome.webRequest.onBeforeRequest风暴:
let rules = [];
chrome.storage.local.get(['rules'], (data) => {
rules = JSON.parse(data.rules) || [];
});
chrome.storage.onChanged.addListener((changes) => {
const { newValue } = JSON.parse(changes.rules);
rules = newValue;
});
chrome.webRequest.onBeforeRequest.addListener(
({ url }) => {
const rule = rules.find(rule => url.startsWith(rule.url));
if (rule) {
return {
redirectUrl: url.replace(rule.url, rule.proxy)
};
}
},
{
urls: [''],
types: ['xmlhttprequest'],
},
['blocking']
)
因为这个事件的处理是同步的,但是我们读取存储的操作是异步的,所以这里多了一个操作,提前读取代理配置,放到一个变量中,以便后续操作。
概括
一个简单的Chrome扩展就完成了。 喜欢的话就给我一个【赞】吧!
过去的建议: