Un servidor Shadowsocks se describe con un cifrado y una contraseña, y opcionalmente un plugin que disfraza la conexión. Potatso se conecta a un servidor cuando admite el cifrado y, si lo hay, el plugin. Usa las tablas siguientes para comprobar los ajustes de tu servidor, tal como los muestra tu proveedor o su enlace ss://.
Puedes añadir un servidor Shadowsocks a mano, con un enlace ss:// o importándolo desde:
- una suscripción de Clash o Mihomo,
- una configuración en línea SIP008, desde un archivo o un enlace,
- un
config.jsonde shadowsocks-rust o shadowsocks-libev, - una configuración de Surge, o una configuración de Xray o V2Ray.
Cifrados
Prefiere un cifrado 2022 si tu servidor lo ofrece, y después un cifrado AEAD. Los cifrados de flujo tienen debilidades conocidas: úsalos solo con servidores que no ofrezcan otra cosa.
| Cifrado | Tipo | Admitido |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ Con varios usuarios |
2022-blake3-chacha20-poly1305, 2022-blake3-chacha8-poly1305 |
2022 | ✅ |
aes-128-gcm, aes-192-gcm, aes-256-gcm |
AEAD | ✅ |
chacha20-ietf-poly1305, xchacha20-ietf-poly1305 |
AEAD | ✅ |
aes-128-ccm, aes-256-ccm, aes-128-gcm-siv, aes-256-gcm-siv |
AEAD | ✅ |
sm4-gcm, sm4-ccm |
AEAD | ✅ |
aes-128-ctr, aes-192-ctr, aes-256-ctr |
De flujo | ✅ |
aes-128-cfb, aes-192-cfb, aes-256-cfb (también escrito -cfb128) |
De flujo | ✅ |
aes-128-cfb1, aes-192-cfb1, aes-256-cfb1 |
De flujo | ✅ |
aes-128-cfb8, aes-192-cfb8, aes-256-cfb8 |
De flujo | ✅ |
aes-128-ofb, aes-192-ofb, aes-256-ofb |
De flujo | ✅ |
camellia-128-ctr, camellia-192-ctr, camellia-256-ctr |
De flujo | ✅ |
camellia-128-cfb, camellia-192-cfb, camellia-256-cfb (también escrito -cfb128) |
De flujo | ✅ |
camellia-128-cfb1, camellia-192-cfb1, camellia-256-cfb1 |
De flujo | ✅ |
camellia-128-cfb8, camellia-192-cfb8, camellia-256-cfb8 |
De flujo | ✅ |
camellia-128-ofb, camellia-192-ofb, camellia-256-ofb |
De flujo | ✅ |
chacha20-ietf, chacha20, salsa20 |
De flujo | ✅ |
bf-cfb, rc4-md5, rc4, table |
De flujo | ✅ |
none (también escrito plain) |
Sin cifrado | ✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, rc4-md5-6 |
De flujo | ❌ Solo ShadowsocksR |
xchacha20, xsalsa20 |
De flujo | ❌ |
Los nombres no distinguen mayúsculas de minúsculas, así que AES-256-GCM funciona igual que aes-256-gcm.
none envía tu tráfico sin cifrar. Úsalo solo con un plugin que cifre la propia conexión, como v2ray-plugin con TLS.
Cada cifrado admitido se prueba con al menos un servidor Shadowsocks real: shadowsocks-rust, sing-box o el servidor original en Python. De los cifrados AEAD anteriores, solo los servidores shadowsocks-rust ofrecen aes-*-ccm, aes-*-gcm-siv y sm4-*, y pocos proveedores los usan.
Claves 2022
Los cifrados 2022 (SIP022) no usan una contraseña. Usan una clave: bytes aleatorios, codificados en Base64, de la longitud que necesita el cifrado. 2022-blake3-aes-128-gcm necesita una clave de 16 bytes y los demás cifrados 2022 una clave de 32 bytes. Usa la clave exactamente como la tiene tu servidor.
Potatso no se conecta con una clave de longitud incorrecta ni con una contraseña que no esté en Base64. Para crear una clave nueva para tu servidor, ejecuta openssl rand -base64 16 para 2022-blake3-aes-128-gcm, o openssl rand -base64 32 para los demás cifrados 2022.
Servidores con varios usuarios
Un servidor 2022 puede compartir un puerto entre varios usuarios (SIP023). Cada usuario tiene su propia clave. Para estos servidores, indica como contraseña la clave del servidor y tu clave de usuario, separadas por dos puntos:
server-key:user-keySolo 2022-blake3-aes-128-gcm y 2022-blake3-aes-256-gcm admiten servidores con varios usuarios.
Plugins
Un plugin envuelve la conexión Shadowsocks para que sea más difícil de detectar. Potatso trae estos plugins integrados, así que no hay que instalar nada más.
| Plugin | Nombres del plugin | Admitido | UDP |
|---|---|---|---|
| Simple Obfs | obfs-local, simple-obfs, obfs |
✅ obfs=http y obfs=tls |
Se envía al servidor sin el plugin |
| v2ray-plugin | v2ray-plugin |
✅ WebSocket, con o sin TLS. El modo QUIC no se admite. | ❌ |
| gost-plugin | gost-plugin |
✅ WebSocket, con o sin TLS | ❌ |
| ShadowTLS | shadow-tls |
✅ Versiones 1, 2 y 3 | ❌ |
| Restls | restls |
✅ | ❌ |
| JLS | jls |
✅ | ❌ |
Potatso no importa un servidor que necesite otro plugin:
- Cloak, xray-plugin y otros plugins son programas que tu dispositivo tendría que ejecutar junto a Potatso, algo que iOS no permite.
- kcptun y ech-tls-tunnel todavía no están disponibles en Potatso.
Configurar un plugin
En los ajustes del servidor, elige el plugin en Plugin y después introduce sus opciones en Parámetro del plugin. Las opciones son pares key=value separados por punto y coma, como en este ejemplo de Simple Obfs:
obfs=tls;obfs-host=cdn.example.comUna clave sola, como tls, activa esa opción. Omite cualquier opción que no necesites; las tablas siguientes indican el valor predeterminado de cada una.
Cuando importas un servidor, Potatso configura por ti el plugin y sus opciones:
- Un enlace
ss://las incluye en su parámetroplugin, después del nombre del plugin:simple-obfs;obfs=tls;obfs-host=cdn.example.com. - Una suscripción de Clash o Mihomo las incluye en
pluginyplugin-opts. - Una configuración SIP008 o un
config.jsonde shadowsocks-rust o shadowsocks-libev las incluye enpluginyplugin_opts.
Son las mismas opciones en todas las formas. Si tu proveedor las enumera una por línea, como en un plugin-opts de Clash, escribe cada una como key=value y únelas con punto y coma.
Opciones de los plugins
Simple Obfs
| Opción | Descripción |
|---|---|
obfs |
Obligatoria. http o tls. |
obfs-host |
La cabecera Host (http) o el nombre del servidor enviado en la negociación TLS (tls). Si está vacía, Potatso usa la dirección del servidor. |
obfs-uri |
Solo http. La ruta de la petición. Por defecto /. |
http-method |
Solo http. El método de la petición. Por defecto GET. |
v2ray-plugin
| Opción | Descripción |
|---|---|
mode |
websocket, el valor predeterminado. El modo QUIC no se admite. |
tls |
Se conecta por TLS. Desactivada por defecto. |
host |
La cabecera Host y el nombre del servidor para TLS. Si está vacía, Potatso usa la dirección del servidor. |
path |
La ruta de WebSocket. Por defecto /. |
mux |
Multiplexación. Desactivada por defecto. Actívala solo si tu servidor la usa. |
skip-cert-verify |
Acepta cualquier certificado del servidor. Úsala solo con un servidor de confianza. |
header |
Una cabecera de petición adicional, como header=Name:Value. Repítela para añadir más cabeceras. |
gost-plugin
| Opción | Descripción |
|---|---|
mode |
Obligatoria. websocket. |
tls |
Se conecta por TLS. Desactivada por defecto. |
host |
La cabecera Host y el nombre del servidor para TLS. Por defecto bing.com, como en gost. |
path |
La ruta de WebSocket. Por defecto /. |
mux |
Multiplexación. Activada por defecto. |
skip-cert-verify |
Acepta cualquier certificado del servidor. Úsala solo con un servidor de confianza. |
fingerprint |
La huella SHA-256 del certificado del servidor, para aceptar solo ese certificado. |
header |
Una cabecera de petición adicional, como header=Name:Value. Repítela para añadir más cabeceras. |
ShadowTLS
| Opción | Descripción |
|---|---|
host |
Obligatoria. El nombre de servidor del sitio de cobertura, como www.example.com. |
version |
Obligatoria. 1, 2 o 3. |
password |
La contraseña. Las versiones 2 y 3 la necesitan. |
alpn |
La lista ALPN, separada por comas. Por defecto h2,http/1.1. |
skip-cert-verify |
Acepta cualquier certificado del sitio de cobertura. |
Restls
| Opción | Descripción |
|---|---|
host |
Obligatoria. El nombre de servidor del sitio de cobertura. |
password |
Obligatoria. La contraseña. |
version-hint |
Obligatoria. tls13 o tls12, según esté configurado tu servidor. |
restls-script |
El script de registros, si tu proveedor te da uno. |
JLS
| Opción | Descripción |
|---|---|
host |
Obligatoria. El nombre de servidor del sitio de cobertura. |
username |
Obligatoria. El nombre de usuario. |
password |
Obligatoria. La contraseña. |
alpn |
La lista ALPN, separada por comas. Por defecto h2,http/1.1. |
Potatso no se conecta a un servidor cuando falta una opción obligatoria o un valor no es válido.
UDP
UDP está activado por defecto en los servidores Shadowsocks y funciona con todos los cifrados admitidos. Desactívalo en los ajustes del servidor si tu servidor no retransmite UDP.
UDP no se envía a través de un plugin, así que con un plugin distinto de Simple Obfs el servidor solo transporta TCP. Potatso no admite UDP sobre TCP (udp-over-tcp o uot en un enlace o suscripción) y no importa un servidor que lo requiera.
Compatibilidad de funciones
| Función | Admitida |
|---|---|
Enlaces ss:// SIP002 |
✅ Incluida la forma antigua en Base64 |
| Plugins SIP003 | Solo los plugins integrados |
| SIP003u (UDP a través de un plugin) | ❌ |
| Cifrados AEAD (SIP004) | ✅ |
| Configuración en línea SIP008 | ✅ |
| Cifrados 2022 SIP022 | ✅ TCP y UDP |
| Cabeceras de identidad de varios usuarios SIP023 | ✅ Para los cifrados AES 2022 |
| Cifrados de flujo | ✅ Consulta Cifrados |
| UDP sobre TCP | ❌ |
| TCP Fast Open, MPTCP | ❌ |
Algunas funciones de shadowsocks-rust son ajustes de su propio programa cliente, sslocal, y Potatso hace el mismo trabajo a su manera:
- Servidores locales SOCKS5, HTTP, tunnel, redir, DNS y TUN: Potatso captura por sí mismo el tráfico de tu dispositivo.
- Listas de control de acceso (ACL): usa reglas en tu perfil.
- Elegir el más rápido de varios servidores: usa un grupo de proxies en tu perfil.
Enlaces ss://
Un enlace ss:// contiene un servidor completo en una sola línea (SIP002):
ss://userinfo@host:port/?plugin=…#name| Parte | Descripción |
|---|---|
userinfo |
El cifrado y la contraseña como cipher:password, codificados en Base64 o con codificación porcentual. Un cifrado 2022 debe usar la forma con codificación porcentual. |
host |
Dirección del servidor. Pon una dirección IPv6 entre corchetes, como [2001:db8::1]. |
port |
Puerto del servidor. |
plugin |
Opcional. El nombre del plugin y sus opciones, separados por punto y coma y con codificación porcentual, como simple-obfs;obfs=tls;obfs-host=cdn.example.com. |
name |
Opcional. El nombre del servidor en Potatso. |
Potatso también importa la forma antigua, en la que todo lo que hay antes de # está codificado en Base64:
ss://base64(cipher:password@host:port)#namePotatso acepta Base64 estándar y seguro para URL, con o sin relleno =. Cuando Potatso comparte un servidor, ofrece las formas SIP002 en Base64 y con codificación porcentual, y la forma antigua.
Ejemplos
Cada ejemplo muestra el enlace que se importa. La contraseña en los ejemplos AEAD es secret.
Un servidor básico con aes-256-gcm:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#BasicUn servidor 2022 con la clave de 16 bytes MTIzNDU2Nzg5MDEyMzQ1Ng==:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022Un servidor 2022 con varios usuarios, con la clave del servidor y la clave de usuario separadas por dos puntos (%3A):
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-userSimple Obfs con TLS, usando cdn.example.com como nombre del servidor:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#ObfsLa forma antigua del servidor básico:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#LegacyUn servidor con una dirección IPv6:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6