某站点下载资源自己主动评论器
生活随笔
收集整理的這篇文章主要介紹了
某站点下载资源自己主动评论器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前兩天登錄某站點我的資源頁,發(fā)現(xiàn)我的下載資源里有近20頁的待評論資源,每個下載資源評論能夠得一個資源分,而某站點的資源評論規(guī)則是每隔60秒才干評論一次,假設(shè)自己一個一個評論的話,得消耗好多時間。因而特開發(fā)了一個某站點下載資源評論器,自己主動的為我評論全部未評論的資源?,F(xiàn)將該評論工具分享例如以下:
? ? ? 3. HTTPS Request package suda.mingcai.csdn.https;import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL;import javax.net.ssl.HttpsURLConnection;import suda.mingcai.csdn.http.HttpClient;public class HttpsClient extends HttpClient {private HttpsURLConnection m_conn; @Overridepublic String getPage(String url) throws Exception{URL u = new URL(url);m_conn = (HttpsURLConnection) u.openConnection();m_conn.setRequestMethod("GET");m_conn.setUseCaches(false);//set request headersm_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");//set cookiesif (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}//get responseBufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));StringBuffer response = new StringBuffer();String line;while((line = reader.readLine()) != null)response.append(line);m_cookies = m_conn.getHeaderFields().get("Set-Cookie");reader.close();return response.toString();}public String sendPost(String url, String params) throws Exception{StringBuilder builder = new StringBuilder();URL u = new URL(url);m_conn = (HttpsURLConnection) u.openConnection();m_conn.setUseCaches(false);m_conn.setRequestMethod("POST");m_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");m_conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");m_conn.setRequestProperty("Referer", "https://passport.website.net/account/login");m_conn.setRequestProperty("Connection", "keep-alive");//set cookiesm_conn.setRequestProperty("Content-Length", params.length() + "");System.out.println("send cookies...");if(m_cookies != null){String cookies = "";for(String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}m_conn.setDoOutput(true);m_conn.setDoInput(true);PrintWriter out = new PrintWriter(m_conn.getOutputStream());out.print(params);out.flush();out.close();int code = m_conn.getResponseCode();if(code == 200){BufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));String line;while ((line = reader.readLine()) != null)builder.append(line);reader.close();System.out.println("login successfully!");}else if(code == 302){String redictUrl = m_conn.getHeaderFields().get("Location").get(0);builder.append(redictUrl);}m_cookies = m_conn.getHeaderFields().get("Set-Cookie"); return builder.toString();}}
? ? ?4. HTTP Request package suda.mingcai.csdn.http;import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL;public class HttpRequest extends HttpClient {private HttpURLConnection m_conn;@Overridepublic String getPage(String url) throws Exception{URL u = new URL(url);m_conn = (HttpURLConnection) u.openConnection();m_conn.setRequestMethod("GET");m_conn.setUseCaches(false);// set request headersm_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");//set cookiesif (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}// get responseBufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));StringBuffer response = new StringBuffer();String line;while ((line = reader.readLine()) != null)response.append(line);m_cookies = m_conn.getHeaderFields().get("Set-Cookie");reader.close();return response.toString();}public String sendPost(String url, String params) throws Exception{StringBuilder builder = new StringBuilder();URL u = new URL(url);m_conn = (HttpURLConnection) u.openConnection();m_conn.setUseCaches(false);m_conn.setRequestMethod("POST");m_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");m_conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");m_conn.setRequestProperty("Referer","https://passport.website.net/account/login");m_conn.setRequestProperty("Connection", "keep-alive");m_conn.setRequestProperty("Host", "passport.website.net");// set cookiesm_conn.setRequestProperty("Content-Length", params.length() + "");if (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}m_conn.setDoOutput(true);m_conn.setDoInput(true);PrintWriter out = new PrintWriter(m_conn.getOutputStream());out.print(params);out.flush();out.close();int code = m_conn.getResponseCode();if (code == 200){BufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));String line;while ((line = reader.readLine()) != null)builder.append(line);reader.close();}else if (code == 302){String redictUrl = m_conn.getHeaderFields().get("Location").get(0);builder.append(redictUrl);}m_cookies = m_conn.getHeaderFields().get("Set-Cookie");return builder.toString();} }
????? 下載地址:http://url.cn/Q9unBR
????? 在實現(xiàn)過程中,基本的一個難點是某站點的登錄採用的https協(xié)議,須要數(shù)字證書。
? ? ? 將核心代碼附上:
? ? 1. HTTP請求接口
package suda.mingcai.csdn.http;public interface IHttpClient {String getPage(String url) throws Exception;String sendPost(String url, String param) throws Exception; }2. HTTP請求基類
package suda.mingcai.csdn.http;import java.net.CookieHandler; import java.net.CookieManager; import java.util.List;import suda.mingcai.csdn.https.HttpsClient;public abstract class HttpClient implements IHttpClient {public final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";public final String ACCEPT = "text/html, application/xhtml+xml, */*";protected List<String> m_cookies;static{CookieHandler.setDefault(new CookieManager());}public static HttpClient createHttpRequest(String url){if(url.startsWith("https"))return new HttpsClient();elsereturn new HttpRequest();}public void setCookies(List<String> cookies){this.m_cookies = cookies;}public List<String> getCookies(){return this.m_cookies;}public abstract String getPage(String url) throws Exception;public abstract String sendPost(String url, String param) throws Exception;}? ? ? 3. HTTPS Request package suda.mingcai.csdn.https;import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL;import javax.net.ssl.HttpsURLConnection;import suda.mingcai.csdn.http.HttpClient;public class HttpsClient extends HttpClient {private HttpsURLConnection m_conn; @Overridepublic String getPage(String url) throws Exception{URL u = new URL(url);m_conn = (HttpsURLConnection) u.openConnection();m_conn.setRequestMethod("GET");m_conn.setUseCaches(false);//set request headersm_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");//set cookiesif (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}//get responseBufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));StringBuffer response = new StringBuffer();String line;while((line = reader.readLine()) != null)response.append(line);m_cookies = m_conn.getHeaderFields().get("Set-Cookie");reader.close();return response.toString();}public String sendPost(String url, String params) throws Exception{StringBuilder builder = new StringBuilder();URL u = new URL(url);m_conn = (HttpsURLConnection) u.openConnection();m_conn.setUseCaches(false);m_conn.setRequestMethod("POST");m_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");m_conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");m_conn.setRequestProperty("Referer", "https://passport.website.net/account/login");m_conn.setRequestProperty("Connection", "keep-alive");//set cookiesm_conn.setRequestProperty("Content-Length", params.length() + "");System.out.println("send cookies...");if(m_cookies != null){String cookies = "";for(String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}m_conn.setDoOutput(true);m_conn.setDoInput(true);PrintWriter out = new PrintWriter(m_conn.getOutputStream());out.print(params);out.flush();out.close();int code = m_conn.getResponseCode();if(code == 200){BufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));String line;while ((line = reader.readLine()) != null)builder.append(line);reader.close();System.out.println("login successfully!");}else if(code == 302){String redictUrl = m_conn.getHeaderFields().get("Location").get(0);builder.append(redictUrl);}m_cookies = m_conn.getHeaderFields().get("Set-Cookie"); return builder.toString();}}
? ? ?4. HTTP Request package suda.mingcai.csdn.http;import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL;public class HttpRequest extends HttpClient {private HttpURLConnection m_conn;@Overridepublic String getPage(String url) throws Exception{URL u = new URL(url);m_conn = (HttpURLConnection) u.openConnection();m_conn.setRequestMethod("GET");m_conn.setUseCaches(false);// set request headersm_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");//set cookiesif (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}// get responseBufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));StringBuffer response = new StringBuffer();String line;while ((line = reader.readLine()) != null)response.append(line);m_cookies = m_conn.getHeaderFields().get("Set-Cookie");reader.close();return response.toString();}public String sendPost(String url, String params) throws Exception{StringBuilder builder = new StringBuilder();URL u = new URL(url);m_conn = (HttpURLConnection) u.openConnection();m_conn.setUseCaches(false);m_conn.setRequestMethod("POST");m_conn.setRequestProperty("User-Agent", USER_AGENT);m_conn.setRequestProperty("Accept", ACCEPT);m_conn.setRequestProperty("Accept-Lauguage", "zh-CN,zh;q=0.8,en;q=0.6");m_conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");m_conn.setRequestProperty("Referer","https://passport.website.net/account/login");m_conn.setRequestProperty("Connection", "keep-alive");m_conn.setRequestProperty("Host", "passport.website.net");// set cookiesm_conn.setRequestProperty("Content-Length", params.length() + "");if (m_cookies != null){String cookies = "";for (String cookie : m_cookies){cookies += ";" + cookie;}m_conn.addRequestProperty("Cookie", cookies);}m_conn.setDoOutput(true);m_conn.setDoInput(true);PrintWriter out = new PrintWriter(m_conn.getOutputStream());out.print(params);out.flush();out.close();int code = m_conn.getResponseCode();if (code == 200){BufferedReader reader = new BufferedReader(new InputStreamReader(m_conn.getInputStream()));String line;while ((line = reader.readLine()) != null)builder.append(line);reader.close();}else if (code == 302){String redictUrl = m_conn.getHeaderFields().get("Location").get(0);builder.append(redictUrl);}m_cookies = m_conn.getHeaderFields().get("Set-Cookie");return builder.toString();} }
? ? ? 鑒于時間關(guān)系,不著過多介紹,實現(xiàn)原理不是太難,有興趣的朋友能夠直接下載源代碼。
轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/3962938.html
總結(jié)
以上是生活随笔為你收集整理的某站点下载资源自己主动评论器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql 触发器同步备份数据表记录
- 下一篇: Winform 导出成Excel打印代码