
En primer lugar, la mano para enseñar a utilizar Java para construir un agente de penetración de la intranet
Veamos primero cómo jugar con los servicios proxy de socket propios de Java. Aquí tenemos untruco clave: No operes el socket subyacente directamente, usar ServerSocket para escuchar el puerto es más libre de problemas. Mira el núcleo de este código:
// Ten en cuenta que es fácil escribir mal ServerSocket(8080) y olvidar añadir el parámetro
ServerSocket server = new ServerSocket(0, 50, InetAddress.getByName("0.0.0.0")); while (true) { {
while (true) {
Socket client = server.accept(); // Recuerda crear un nuevo hilo aquí.
// Recuerda enhebrar el nuevo hilo aquí, de lo contrario se bloqueará.
new Thread(new ProxyHandler(client)).start(); }
}
Ten en cuenta que hay un agujero en la configuración de puertos: si utilizas directamente el nuevo ServerSocket(8080), es posible que no puedas conectarte a la red externa. Tienes que añadir0.0.0.0 esta dirección especialPara permitir el acceso externo. Muchos novatos plantados en esto, la depuración de medio día para encontrar que es la dirección de enlace del problema.
En segundo lugar, al servicio proxy para llevar una chaqueta HTTP
No basta con tener un proxy, tiene que ser reconocido por el navegador. Aquí para tratar el método CONNECT del protocolo HTTP, céntrate en este tratamiento de la cabecera de respuesta:
// Observe las dos nuevas líneas al final de la cabecera de respuesta
String response = "HTTP/1.1 200 Conexión establecidarr";
OutputStream out = client.getOutputStream();
OutputStream out = client.getOutputStream(); out.write(response.getBytes()); out.flush(); out.write(response.getBytes())
out.write(response.getBytes()); out.flush();
Aquí tienes una.Donde es fácil darse la vueltaCabecera de respuesta: La cabecera de respuesta debe estar formateada estrictamente según el protocolo HTTP, y el navegador se bloqueará si falta un carácter de nueva línea. Se recomienda utilizar la comparación de captura de paquetes WireShark para asegurarse de que el formato es completamente correcto.
En tercer lugar, el agente ipipgo combate real valor de coincidencia
¡Aquí está el punto! Nuestro servicio proxy va a acceder a la línea premium de ipipgo. Configure el proxy en el código depostura correctaDebería serlo:
// Ten cuidado de sustituir la información de autenticación por la tuya propia
System.setProperty("http.proxyHost", "gateway.ipipgo.com");
System.setProperty("http.proxyPort", "9021");
System.setProperty("http.proxyUser", "tu_nombre_de_usuario"); System.setProperty("http.proxyUser", "tu_nombre_de_usuario");
System.setProperty("http.proxyContraseña", "tu_contraseña"); System.setProperty("http.proxyContraseña", "tu_contraseña");
Le recomendamos que utilice suPaquete residencial estático, especialmente adecuado para escenarios que requieren IPs estables. Por ejemplo, los proyectos de rastreo o sistemas que requieren un inicio de sesión IP fija, $ 35 al mes es mucho más barato que comprar un servidor.
IV. Pautas para evitar escollos (lecciones aprendidas con sangre y lágrimas)
Nombra algunos baches que he pisado:
1. Ajustes de tiempo de espera: Si no se establece el tiempo de espera del socket, todo el servicio se cuelga cuando la red fluctúa.
2. Fuga de memoria: Cada conexión debe cerrarse en el momento oportuno, utilizar la sintaxis try-with-resources es la forma más segura de hacerlo.
3. Cuestiones de acreditaciónLa línea TK de ipipgo requiere una cabecera de autenticación especial, ¡recuerde pedir el código de ejemplo al servicio de atención al cliente!
V. Lo que debe querer preguntar
P: ¿Qué debo hacer si mi agente es lento?
R: Selección de prioridad ipipgo línea transfronteriza, la latencia medida se puede reducir a 60%. no ser codicioso y barato con el paquete estándar, la versión empresarial de la más cara 2, pero más estable de ancho de banda.
P: ¿Cómo elijo un paquete?
R: Edición estándar dinámica para desarrollo y pruebas, edición empresarial para negocios formales, necesitan IP fija para elegir residencia estática. Su servicio al cliente puede dar consejos programa
P: ¿Soporta multihilo?
R: código para abrir el grupo de hilos en la línea, ipipgo API por defecto de apoyo 500 concurrencia, no lo suficiente puede solicitar la expansión
Por último, una gran verdad: escribir su propio agente, aunque la práctica, pero el entorno de producción o directamente en el programa ya hecho de ipipgo es más fiable. Su API SERP para hacer la recopilación de datos es realmente fragante, que utiliza quién sabe. Cuando el código está atascado, recuerde que debe ir a la página web oficial para encontrar código de ejemplo, mucho más fuerte que buscar ciegamente tutoriales en todas partes.

