J'ai récemment voulu publier automatiquement et les réponses automatiquement. Je l'ai essayé avec un forum et j'ai constaté qu'il était possible, mais il n'a pas été utilisé à nouveau à l'avenir pour éviter d'affecter le fonctionnement normal du forum.
1. Le format du lien post
http: //bbs.***.***.**/forum.php? Mod = ViewThread & tid = 774210
Les modifications du nombre à la fin du 774210 peuvent être obtenues en obtenant différents messages
2. Empêcher le poste d'être supprimé à nouveau et déterminer si le poste existe
3. Incrémentez le numéro d'identification par la suite et faites une demande de poste pour répondre à chaque lien
Points clés
La réponse nécessite des informations de connexion de l'utilisateur que l'une consiste à utiliser des cookies
Une autre façon consiste à simuler la connexion
Cet article adopte le premier
Déterminez s'il existe le poste d'URL correspondant
Il est possible que l'utilisateur ait publié un message, par exemple, l'URL est http: //bbs.***.***.**/forum.php? Mod = ViewThread & tid = 774200
Plus tard, l'utilisateur du poste a été supprimé ou supprimé par l'administrateur. Bien que le poste ait disparu, le TID = 774200 existe toujours.
public static boolean isExist (int id) {String tmpppath = Baserefer + id; URL URL; try {url = new URL (tMPPath); HttpurlConnection con = (httpurlconnection) url.openconnection (); con.addrequestProperty ("contenu-type", "text / html; charset = utf-8"); CON.AdDrequestProperty ("User-Agent", "Mozilla / 5.0 (Windows NT 6.1) Applewebkit / 537.36 (KHTML, comme Gecko) Chrome / 38.0.2125.104 Safari / 537.36"); con.addrequestproperty ("référente", "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 ("Désolé, le sujet spécifié n'existe pas ou a été supprimé ou est en cours d'examen")) {System.out.println ("id =" + id + "Le post existe ou a été supprimé!"); retourne false; }}} catch (MalformEdUrlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } Retour True;}Simuler la publication <br /> Le code est relativement simple, la précaution consiste à trouver votre propre cookie et à l'attribuer à Stroncez votre cookie
Envoyez une réponse en utilisant la publication, et le message de réponse est dans mapdata.put ("message", "Aide à l'amitié")
chaîne finale statique privée basèrefer = "http: //bbs.**.**.**/forum.php? mod = ViewThread & Tid ="; chaîne finale statique privée yourcookie = "Q8QA_2132_SALTKEY = **; Q8QA_2132_LASTVISIT = **** 3699; 774210; // Vous avez besoin de modification pour (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 (tmpppath); Map <string, string> mapData = new LinkedHashMap <String, String> (); mapdata.put ("mod", "post"); mapdata.put ("action", "réponse"); mapdata.put ("RépondreSubmit", "Oui"); MapData.put ("Infloat", "Oui"); mapdata.put ("handlekey", "fastpost"); mapdata.put ("inajax", "1"); MapData.put ("Message", "Support d'amitié"); mapdata.put ("formhash", "86ec5d81"); try {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 ("contenu-type", "application / x-www-form-urlencoded"); con.setRequestProperty ("Content-Length", String.ValueOf (path.length ())); Con.SetRequestProperty ("User-Agent", "Mozilla / 5.0 (Windows NT 6.1) Applewebkit / 537.36 (KHTML, comme Gecko) Chrome / 38.0.2125.104 Safari / 537.36"); con.setRequestProperty ("cookie", yourcookie); con.setDoOutput (true); 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 ("Soumis avec succès dans id =" + id + "!"); essayez {thread.sleep (20 * 1000); } Catch (InterruptedException e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} Catch (UnpportDenCcodingException e) {// TODO Block de catch généré par Auto E.PrintStackTrace (); } catch (MalformEdUrException e) {// TODO Générations de catch Généra E.PrintStackTrace (); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); } catch (exception e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }} Il existe également une méthode d'outil qui convertit les flux d'entrée en octets
class streamTool {public static byte [] read (inputStream inputStr) lève exception {bytearrayoutputStream outstr = new bytearrayoutputStream (); // TODO Méthode générée automatique BYTE BYTE [] BUFFER = NOUVEAU BYTE [1024]; int len = 0; while ((len = inputstr.read (tampon))! = -1) {outstr.write (tampon, 0, len); } inputstr.close (); return outstr.toByTearray (); }}Image de reproduction:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.