Use npm install
Instala paquetes npm como dayjs o lodash en la carpeta Application Support de Proxyman y úsalos en Proxyman Scripting con require().
Usar paquetes npm en Proxyman Scripting
Proxyman Scripting admite require() para paquetes npm compatibles instalados en la carpeta Application Support de Proxyman. Así, un script puede reutilizar utilidades populares de JavaScript en lugar de escribir a mano la lógica habitual.
Esta función mantiene la misma palabra clave require() que Proxyman ya usa para las librerías integradas y los addons de usuario. Las importaciones existentes, como @libs, @addons, @users, los archivos JSON, los archivos de texto y los archivos locales, siguen funcionando.
Instalar un paquete
Abre Terminal e instala los paquetes en la carpeta Application Support de Proxyman:
- Instala
dayjs
$ cd "$HOME/Library/Application Support/com.proxyman.NSProxy"
$ npm install --prefix . dayjs --ignore-scripts --no-audit --no-fund
Después de la instalación, el paquete debería estar en:
~/Library/Application Support/com.proxyman.NSProxy/node_modules
Usar un paquete en un script
Usa el nombre del paquete con require():
const dayjs = require("dayjs");
async function onRequest(context, url, request) {
const formattedDate = dayjs("2026-05-05T13:00:00Z").format("YYYY-MM-DD");
request.headers["X-Proxyman-Dayjs"] = formattedDate;
return request;
}
Ejemplos
Dar formato a una fecha con dayjs
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . dayjs --ignore-scripts --no-audit --no-fund
Script:
const dayjs = require("dayjs");
async function onRequest(context, url, request) {
request.headers["X-Request-Date"] = dayjs().format("YYYY-MM-DD");
return request;
}
Normalizar texto con lodash
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . lodash --ignore-scripts --no-audit --no-fund
Script:
const _ = require("lodash");
async function onRequest(context, url, request) {
const label = _.kebabCase("Hello Proxyman Scripts");
request.headers["X-Proxyman-Label"] = label;
return request;
}
Validar entradas con validator
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . validator --ignore-scripts --no-audit --no-fund
Script:
const validator = require("validator");
async function onRequest(context, url, request) {
const email = new URL(url).searchParams.get("email") || "";
request.headers["X-Email-Is-Valid"] = validator.isEmail(email) ? "true" : "false";
return request;
}
Crear slugs con slugify
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . slugify --ignore-scripts --no-audit --no-fund
Script:
const slugify = require("slugify");
async function onRequest(context, url, request) {
const title = new URL(url).searchParams.get("title") || "Hello Proxyman";
request.headers["X-Proxyman-Slug"] = slugify(title, { lower: true });
return request;
}
Codificar datos con js-base64
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . js-base64 --ignore-scripts --no-audit --no-fund
Script:
const { Base64 } = require("js-base64");
async function onResponse(context, url, request, response) {
response.headers["X-Proxyman-Encoded"] = Base64.encode("Proxyman");
return response;
}
Decodificar entidades HTML con he
Instalar:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . he --ignore-scripts --no-audit --no-fund
Script:
const he = require("he");
async function onResponse(context, url, request, response) {
response.headers["X-Decoded-Title"] = he.decode("Proxyman & Scripting");
return response;
}
Compatibilidad
Proxyman ejecuta los scripts con JavaScriptCore, no con Node.js. Los paquetes npm funcionan mejor cuando son JavaScript puro y compatibles con CommonJS.
Compatible:
- Paquetes CommonJS cargados con
require("package-name") - Puntos de entrada del paquete definidos en
package.json, comomainyexportssimples - Importaciones relativas dentro de los paquetes instalados, como
require("./helper") - Archivos JSON requeridos por los paquetes
No compatible:
- Módulos integrados de Node.js como
fs,path,crypto,httpochild_process - Addons nativos
.node - Paquetes que necesitan un entorno completo de Node.js
- Paquetes solo ESM que no pueden cargarse con
require()de CommonJS
Librerías nativas de Node.js
Proxyman Scripting no se ejecuta dentro del entorno de Node.js. Solo usa Node/npm como herramienta para instalar paquetes y, después, carga los archivos JavaScript compatibles con JavaScriptCore.
Por eso, las librerías nativas de Node.js no son compatibles:
require("fs"),require("path"),require("crypto")y otros módulos integrados de Node.js están bloqueados.require("node:fs")y las subrutas integradas, comorequire("fs/promises"), están bloqueadas.- Los addons nativos de C/C++ compilados como archivos
.nodeestán bloqueados. - Los paquetes que llaman a APIs específicas de Node, como
process.dlopen, APIs del sistema de archivos, sockets de red o procesos hijos, no funcionarán.
Ejemplos de paquetes que normalmente no funcionan en Proxyman Scripting:
sharpsqlite3bcryptcanvaspuppeteer- Paquetes que requieren
fs,path,crypto,http,https,netochild_process
En su lugar, usa paquetes de JavaScript puro o paquetes que ofrezcan una build de CommonJS compatible con el navegador.
Solución de problemas
Si require("dayjs") u otro paquete devuelve undefined, comprueba que el paquete esté instalado en la carpeta esperada:
ls "$HOME/Library/Application Support/com.proxyman.NSProxy/node_modules"
Si falta node_modules, vuelve a instalarlo con --prefix .:
cd "$HOME/Library/Application Support/com.proxyman.NSProxy" && npm install --prefix . dayjs --ignore-scripts --no-audit --no-fund
La opción --prefix . es importante, porque de lo contrario npm podría subir hasta un package.json superior e instalar los paquetes fuera de la carpeta de Proxyman.