Recientemente quería publicar automáticamente y responder automáticamente. Lo probé con un foro y descubrí que era factible, pero no se usó nuevamente en el futuro para evitar afectar el funcionamiento normal del foro.
1. El formato del enlace de la publicación es
http: //bbs.***.***.**/forum.php? mod = verthread & tid = 774210
Los cambios de número al final del 774210 se pueden obtener obteniendo diferentes publicaciones
2. Evite que el poste se elimine nuevamente y determine si existe la publicación
3. Incrementa el número de identificación después y haga una solicitud de publicación para responder a cada enlace
Puntos clave
Responder requiere información de inicio de sesión del usuario Uno es usar cookies
Otra forma es simular el inicio de sesión
Este artículo adopta el primero
Determine si existe el puesto correspondiente de URL
Es posible que el usuario haya publicado una publicación, por ejemplo, la URL es http: //bbs.***.***.**/forum.php? Mod = ViewThread & tid = 774200
Más tarde, el usuario de la publicación fue eliminado o eliminado por el administrador. Aunque la publicación se ha ido, el TID = 774200 todavía existe.
public static boolean isexist (int id) {string tmppath = Baserefer + id; URL URL; intente {url = new url (tmppath); Httpurlconnection con = (httpurlconnection) url.openconnection (); con.AddRequestProperty ("Content-type", "Text/html; charset = utf-8"); Con.AddRequestProperty ("User-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, como gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.addrequestProperty ("Referente", "http://t.dianping.com/register"); con.setRequestMethod ("Get"); if (con.getResponseCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "UTF-8"); if (info.contains ("Lo siento, el tema especificado no existe o se ha eliminado o se está revisando")) {System.out.println ("id =" + id + "Post existe o se ha eliminado!"); devolver falso; }}} Catch (MalFormedUrLeCeption e) {// TODO BLOQUE DE CABTA GENERADA AUTO } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } return true;}Simular la publicación <Br /> El código es relativamente simple, la medida de precaución es encontrar su propia cookie y asignarla para encadenar a sucookie
Envíe una respuesta usando POST, y el mensaje de respuesta está en MapData.put ("Mensaje", "Ayuda de la amistad")
cadena final estática privada Baserefer = "http: //bbs.**.**.**/forum.php? mod = viewThread & tid ="; private static final string yourcookie = "Q8qa_2132_saltkey = **; q8qa_2132_lastVisit = **** 36999;"; public static void main (string [] [] 774210; // Necesita el cambio para (int i = 0; i <100; i ++) {postmessage (startID); startID ++; }} public static void postmessage (int id) {if (! isExist (id)) {return; } String tmppath = Baserefer + id; StringBuilder Path = new StringBuilder (tmppath); Map <string, string> mapData = new LinkedHashMap <String, String> (); mapData.put ("mod", "post"); mapData.put ("Acción", "Respuesta"); mapData.put ("ResponderSubmit", "Sí"); mapdata.put ("infloat", "sí"); mapData.put ("HandleKey", "FastPost"); mapData.put ("Inajax", "1"); mapData.put ("Mensaje", "Apoyo a la amistad"); mapData.put ("Formhash", "86EC5D81"); Pruebe {for (map.entry <string, string> mapent: mapdata.entryset ()) {path.append ("&"); path.append (mapent.getkey () + "="); Path.Append (urlencoder.encode (mapent.getValue (), "utf-8")); } Url url = new URL (Path.ToString ()); Httpurlconnection con = (httpurlconnection) url.openconnection (); con.setRequestMethod ("post"); con.setRequestProperty ("Content-type", "Application/X-WWW-form-URLEncoded"); con.setRequestProperty ("Content-longitud", String.ValueOf (Path.Length ())); Con.setRequestProperty ("User-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, como gecko) Chrome/38.0.2125.104 Safari/537.36"); Con.setRequestProperty ("Cookie", YourCookie); con.setDoOutput (verdadero); OutputStream Outstr = con.getOutputStream (); Outstr.Write (Path.ToString (). GetBytes ()); if (con.getResponseCode () == 200) {inputStream inputStr = con.getInputStream (); String info = new String (streamtool.read (inputStr), "UTF-8"); System.out.println ("enviado correctamente en id =" + id + "!"); intente {Thread.sleep (20 * 1000); } Catch (InterruptedException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} Catch (UnsupportedEncodingException e) {// TODO BLOQUE DE CABTA GENERADA AUTO } Catch (MalFormedUrexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } Catch (ioException e) {// tODO Auto Generated BLOCK E.PrintStackTRace (); } Catch (Exception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} También hay un método de herramienta que convierte las secuencias de entrada en bytes
Class StreamTool {public static byte [] read (inputStream inputStr) lanza la excepción {bytearRayOutputStream Outstr = new ByteArRayOutputStream (); // TODO Método Generado automático byte [] buffer = new Byte [1024]; int len = 0; while ((len = inputStr.read (buffer))! = -1) {Outstr.Write (buffer, 0, len); } inputstr.close (); return outstr.tobytearray (); }}Imagen de reproducción:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.