Недавно я хотел публиковать автоматически и автоматически отвечает. Я попробовал это с форумом и обнаружил, что это было выполнимо, но в будущем он не использовался, чтобы не влиять на нормальную работу форума.
1. Формат ссылки пост
http: //bbs.***.***.**/Forum.php? MOD = ViewThread & Tid = 774210
Изменения числа в конце 774210 можно получить, получая разные посты
2. Предотвращение того, что пост будет снова удален, и определить, существует ли пост
3. Потом увеличить идентификационный номер, и сделайте запрос сообщения, чтобы ответить на каждую ссылку
Ключевые моменты
Ответ требует информации о входе в систему пользователя, чтобы использовать файлы cookie
Другой способ - имитировать вход
Эта статья принимает прежние
Определите, существует ли соответствующий пост URL
Возможно, что пользователь опубликовал сообщение, например, URL -адрес http: //bbs.***.***.**/forum.php? MOD = ViewThread & Tid = 774200
Позже пользователь поста был удален или удален администратором. Хотя пост исчез, TID = 774200 все еще существует.
public static boolean isexist (int id) {string tmppath = baserefer + id; URL URL; try {url = new url (tmppath); Httpurlconnection con = (httpurlconnection) url.openconcenection (); con.addrequestproperty ("content-type", "text/html; charset = utf-8"); con.addrequestproperty («Пользовательский агент», Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, как гекко) Chrome/38.0.2125.104 Safari/537,36 "); con.addrequestproperty («Реферат», «http://t.dianpance.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 («Извините, указанная тема не существует или была удалена или рассматривается»)) {System.out.println ("id =" + id + "Post существует или была удалена!"); вернуть ложь; }}} catch (malformedurlexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } вернуть true;}Моделируйте публикацию <br /> код относительно прост, мера предосторожности состоит в том, чтобы найти свой собственный файл cookie и назначить его на строки yourcookie
Отправить ответ, используя сообщение, и ответное сообщение находится в mapdata.put («Сообщение», «Справка дружбы»)
Приватная статическая конечная строка baserefer = "http: //bbs.**.**.**/forum.php? mod = viewthread & tid ="; частная статическая конечная строка yourcookie = "q8qa_2132_saltkey = **; q8qa_2132_lastvisit = **** 3699;"; 774210; // вам нужно изменение для (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 ("action", "ответить"); mapdata.put ("replysubmit", "да"); mapdata.put ("infoat", "да"); mapdata.put ("handlekey", "fastpost"); mapdata.put ("inajax", "1"); mapdata.put («Сообщение», «Поддержка дружбы»); 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.openconcenection (); con.setrequestmethod ("post"); con.setRequestProperty («контент-тип», «Приложение/X-WW-Form-UrlencoDed»); con.setRequestProperty («Длина контента», string.valueof (path.length ())); con.setrequestproperty («пользователь-агент», «Mozilla/5.0 (Windows NT 6.1) AppleWebkit/537.36 (khtml, как гекко) 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 ("Успешно отправлено в id =" + id + "!"); try {thread.sleep (20 * 1000); } catch (прерванная экспрессия e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} catch (unsupportedencodingexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (malformedurlexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (Exception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }} Существует также метод инструмента, который преобразует входные потоки в байты
Class Streamtool {public Static Byte [] read (inputStream inputstr) бросает исключение {bytearRayoutputstream outstr = new BytearRayoutputStream (); // TODO Автогенерированный метод загрязняет байт [] буфер = новый байт [1024]; int len = 0; while ((len = inputstr.read (buffer))! = -1) {outstr.write (buffer, 0, len); } inputstr.close (); вернуть outstr.tobytearray (); }}Изображение воспроизведения:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.