convert.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import fs from "fs"
  2. import url from "url"
  3. import qs from "qs"
  4. import YAML from "yaml"
  5. const proxies = fs
  6. .readFileSync("proxyurl.txt", "utf8")
  7. .toString()
  8. .split("\n")
  9. .map(proxy => proxy.trim())
  10. .filter(i => !!i)
  11. .map(proxy => {
  12. proxy = new URL(proxy)
  13. return {
  14. name: proxy.hash.replace("#", ""),
  15. server: proxy.hostname,
  16. port: parseInt(proxy.port),
  17. "reality-opts": {
  18. "public-key": proxy.searchParams.get("pbk"),
  19. "short-id": parseInt(proxy.searchParams.get("sid"))
  20. },
  21. "client-fingerprint": proxy.searchParams.get("fp"),
  22. type: proxy.protocol.replace(":", ""),
  23. uuid: proxy.username,
  24. tls: true,
  25. tfo: false,
  26. "skip-cert-verify": true,
  27. servername: proxy.searchParams.get("sni"),
  28. network: proxy.searchParams.get("type")
  29. }
  30. })
  31. fs.writeFileSync(
  32. "proxies.yaml",
  33. YAML.stringify({
  34. proxies,
  35. "proxy-groups": [
  36. {
  37. name: "RCS专用",
  38. type: "load-balance",
  39. url: "http://www.google.com/generate_204",
  40. interval: 300,
  41. strategy: "consistent-hashing",
  42. proxies: proxies.map(proxy => proxy.name)
  43. }
  44. ]
  45. })
  46. )