HttpClient crawlt den Quellcode von Webseiten
Paket UTIL;
import java.io.IOException;import java.io 🎜>import java.text.DateFormat;
import java.util.ArrayList;
import java.util.HashMap; 🎜>import java.util.List;
import java.util.Set;
import java.util.zip .GZIPInputStream;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair ; httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params. HttpConnectionManagerParams;
/ **
* @author Liuwei
* Datum: 18. Dezember 2009
*
* TODO
* Hilfsklasse für HttpClient
* /
öffentliche Klasse HttpClientHelper
{
/ **
* Zeitüberschreitung der HttpClient-Verbindung, Zeitüberschreitungseinstellung für das Lesen von Daten (Einheit: Millisekunden)
* /
Öffentliche statische endgültige Interpretation HTTPCLIENT_CONNECTION_TIMEOUT = 30000;
Public static final int HTTPCLIENT_SO_TIMEOUT = 120000;
Public static final int HTTPMETHOD_SO_TIMEOUT = 5000;
//Lassen Sie den ConnectionManager verwalten, ob die Verbindung geschlossen werden soll
Private static boolean AlwaysClose = FALSE ;
private static string defaultEncode = "UTF-8"; private static last DateFormat DATE_FORMAT = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS");
/ **
* Holen Sie sich die HttpClient-Verbindung und legen Sie die relevanten Parameter fest
*
* @return
* /
Public static HttpClient's getHttpClient()
{
HttpClient client = new HttpClient(new SimpleHttpConnectionManager(alwaysClose));
HttpConnectionManagerParams managerParams = client.getHttpConnectionManager() getParams() Methode.
//Legen Sie das Zeitlimit für die Verbindung fest (in Millisekunden)
managerParams.setConnectionTimeout (HTTPCLIENT_CONNECTION_TIMEOUT);
//Legen Sie das Zeitlimit für das Lesen von Daten fest (in Millisekunden)
managerParams.setSoTimeout (HTTPCLIENT_SO_TIMEOUT);
Zurück zum Client;
}
/ **
* Holen Sie sich die HttpClient-Verbindung und legen Sie die relevanten Parameter fest
*
* @parameter logonSite
* @parameter logonPort
* @parameter Protocol
* @return
* /
public static HttpClient getHttpClient(last string logonSite, last int logonPort, last string Protocol)
{
HttpClient client = new HttpClient( new SimpleHttpConnectionManager(alwaysClose));
client.getHostConfiguration() setHost(logonSite, logonPort, Protocol).
HttpConnectionManagerParams managerParams = client.getHttpConnectionManager() getParams()-Methode.
//Legen Sie das Zeitlimit für die Verbindung fest (in Millisekunden)
managerParams.setConnectionTimeout (HTTPCLIENT_CONNECTION_TIMEOUT);
//Legen Sie das Zeitlimit für das Lesen von Daten fest (in Millisekunden)
managerParams.setSoTimeout (HTTPCLIENT_SO_TIMEOUT);
return client; ;
boolean includeUserAgent = FALSE;
if (null = header&& false == header.isEmpty()!)
{
set
for (enter
{
if (false == includeUserAgent
&&"UserAgent".equals(entry.getKey()))
{
includeUserAgent = TRUE;
}
headers.add(new headers(entry.getKey(), enter.getValue())); >if (false == includeUserAgent)
{
headers.add(new headers(
"UserAgent" ,
"Mozilla/4.0 (Kompatibel mit; MSIE 7.0; Windows NT 5.1; GTB5; . NET CLR 1.1.4322; .NET CLR 2.0 0.50727; MAXTHON 2.0)); ;String, String> POSTDATA)
{
if (null == || POSTDATA postData.isEmpty())
{
return NULL; ;input
{
double[i++] = new NameValuePair(entry.getKey(), enter.getValue()}
Rückgabepaar;
}
/ **
*Inhaltsinformationen der Webseite anfordern
*
* @parameter HttpClient
* @parameter reqUrl
*Parametertitel
* @parameter POSTDATA
*Parameterkodierung
* @return
*/
Öffentliche statische Zeichenfolge doRequest(HttpClient HttpClient, String reqUrl,
Map
{
String htmlContent = NULL;if (null == HttpClient)
{
return htmlContent; >//Codierungseinstellungen anfordern
Encoding = (empty == binding defaultEncode: binding);//Header-Anforderungsinformationen
List
if (empty = POSTDATA! )
{
PostMethod PostMethod = new EncodePostMethod(reqUrl,kodierung);
for (head tempHeader: header)
{
postMethod.setRequestHeader(tempHeader); 🎜>//Post-Parameter-Einstellung NameValuePair [] of
= PARAMS getPairs(POSTDATA);if (leer = Parameter!)
{
postMethod.setRequestBody(PARAMS);
}
//Webseiteninhalt extrahieren
htmlContent =executeMethod(HttpClient, post-method,kodierung, getWebSite(reqUrl)); neue Implementierung getMethod(reqUrl);
for (head tempHeader: header)
{
getMethod.setRequestHeader(tempHeader);
}
//Webseiteninhalt extrahieren
htmlContent =executeMethod(HttpClient, getMethod,kodierung, NULL);
}
return htmlContent;
}
Private static String getWebSite(String reqUrl)
{
String website = NULL;
if (null == reqUrl || reqUrl.isEmpty())
{
Return website;
if (reqUrl.startsWith(prefix))
{
INT index = reqUrl.substring(prefix.length()) indexOf("/") + prefix .length();
Website = reqUrl.substring(0, index);
}
Return to website; >* @parameter HttpClient
* @parameter requestMethod
*parameterkodierung
*parameter website
* @return
* /
Privater statischer StringexecuteMethod(HttpClient HttpClient, enum HTTPMethod requestMethod, codierter String, String-Site)
{
String ResponseContent = NULL;
if (null == HttpClient)
{
Return ResponseContent; Bestimmen Sie, ob verschlüsselte Daten angefordert werden sollen
Boolean dataEncrypt = FALSE;
Header takeEncoding = requestMethod.getRequestHeader ("Accept Encoding"); leer = AcceptEncoding
. && AcceptEncoding.getValue() enthält("gzip"))
{
dataEncrypt = TRUE
}
InputStream ResponseStream = NULL
try
{
INT status = httpClient.executeMethod(requestMethod);
if (HttpStatus.SC_OK == status)
{
responseStream = requestMethod.getResponseBodyAsStream();
responseContent = getContentByStream(dataEncrypt new GZIPInputStream( ResponseStream) : ResponseStream, Encoding); . Dies ist bei einigen Anmeldungen nicht der Fall. Wichtig bei der Autorisierung der Verwendung von Cookies
Andernfalls gilt, wenn (HttpStatus.SC_MOVED_PERMANENTLY == Status
|| = Status
||. HttpStatus.SC_TEMPORARY_REDIRECT = = Status)
{
//Neue URL-Adresse lesen
Header = requestMethod.getResponseHeader("position");
if (! header = NULL )
if (empty == RedirectUrl || RedirectUrl.isEmpty())
{
redirectUrl = "/";
}
if (false == RedirectUrl.startsWith(" HTTP: //")
! && empty = website)
{
if (website.startsWith("/"))
{
redirectUrl = website+redirectUrl;
}
Andere
{
redirectUrl = website + "/" + restartUrl;
}
GetMethod weitergeleitet = neue Implementierung getMethod(redirectUrl); = requestMethod.getRequestHeader("referrer");
if (null = referrer! )
{
redirect.addRequestHeader(referrer);
}
header cookie = requestMethod.getRequestHeader("cookie");
if (null = cookie!)
{
redirect.addRequestHeader(cookie);
status = httpClient.executeMethod(redirect);
if (HttpStatus.SC_OK == status)
{
responseStream = getResponseBodyAsStream(). ;
responseContent = getContentByStream(responseStream(); } //Endstatus
} Catch Up (Exception 5)
{
e.printStackTrace ();
}Endlich
{
if (requestMethod!= NULL)
{
requestMethod.releaseConnection();
}
}
return ResponseContent;
/ **
*Informationen aus dem Stream gemäß der angegebenen Kodierung lesen
*
* @Parameter inStream
*Parameterkodierung
* @Return
* IOException auslösen
* /
Public static String getContentByStream(InputStream inStream, String-Kodierung) löst eine IOException aus
{
if (null == instream)
{
return NULL
}
Content of StringBuilder = new StringBuilder();
//Lesen Sie den Stream-Inhalt mit dem angegebenen Codierungsformat
BufferedReader reader = new BufferedReader(new InputStreamReader(Interstitial, binding));
String message = NULL; while (null = (message = reader.readLine())!)
{
content.append(message);
content.append("r n"}
//Schließen Sie den Reader und Ressourcen freigeben
reader.close();
Return (content.toString());
/ **
* Innere Klasse, geerbt von PostMethod, früher Geben Sie das Codierungsformat der Postanforderung an >{
Super(URL);
this.encode = binding; generate method stub
return (this.encode);
}
}
/ * *
*Test
*
* @parameter ARGS
* /
public static void main(String[] args)
{
//System.setProperty( "http.proxyHost", "165.228.128.10");
//System. setProperty("http.proxyPort", "3128");
//System.setProperty("http.proxySet", "true ");
String reqUrl = " http:// news.39.net/jbyw/index.html ";
reqUrl = " http://news.39.net/ a/2010722/1404231.html ";
Map
headers.put("Akzeptiere die Codierung", "gzip,deflate"); HttpClient, reqUrl, headers, null, "GBK");
System.out.println(htmlContent);
}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Ausführen des H5 -Projekts erfordert die folgenden Schritte: Installation der erforderlichen Tools wie Webserver, Node.js, Entwicklungstools usw. Erstellen Sie eine Entwicklungsumgebung, erstellen Sie Projektordner, initialisieren Sie Projekte und schreiben Sie Code. Starten Sie den Entwicklungsserver und führen Sie den Befehl mit der Befehlszeile aus. Vorschau des Projekts in Ihrem Browser und geben Sie die Entwicklungsserver -URL ein. Veröffentlichen Sie Projekte, optimieren Sie Code, stellen Sie Projekte bereit und richten Sie die Webserverkonfiguration ein.

Um die Charaktercodierung auf der Serverseite festzulegen, um die durchgestellte Bootstrap -Tabelle zu lösen, müssen Sie die folgenden Schritte ausführen: Überprüfen Sie die Server -Zeichencodierung. Bearbeiten Sie die Serverkonfigurationsdatei; Setzen Sie die Zeichenkodierung auf UTF-8; Speichern und starten Sie den Server neu; Überprüfen Sie die Codierung.

Um ein CGI-Verzeichnis in Apache einzurichten, müssen Sie die folgenden Schritte ausführen: Erstellen Sie ein CGI-Verzeichnis wie "CGI-bin" und geben Sie Apache-Schreibberechtigungen. Fügen Sie den Block "scriptalias" -Richtungsblock in die Apache-Konfigurationsdatei hinzu, um das CGI-Verzeichnis der URL "/cgi-bin" zuzuordnen. Starten Sie Apache neu.

Die Schritte zum Starten von Apache sind wie folgt: Installieren Sie Apache (Befehl: sudo apt-Get-Get-Installieren Sie Apache2 oder laden Sie ihn von der offiziellen Website herunter). (Optional, Linux: sudo systemctl

In diesem Artikel werden verschiedene Methoden eingeführt, um die OpenSSL -Konfiguration des Debian -Systems zu überprüfen, um den Sicherheitsstatus des Systems schnell zu erfassen. 1. Bestätigen Sie zuerst die OpenSSL -Version und stellen Sie sicher, ob OpenSSL installiert wurde und Versionsinformationen. Geben Sie den folgenden Befehl in das Terminal ein: Wenn OpenSslversion nicht installiert ist, fordert das System einen Fehler auf. 2. Zeigen Sie die Konfigurationsdatei an. Die Hauptkonfigurationsdatei von OpenSSL befindet sich normalerweise in /etc/ssl/opensl.cnf. Sie können einen Texteditor (z. B. Nano) verwenden: Sudonano/etc/ssl/openSSL.cnf Diese Datei enthält wichtige Konfigurationsinformationen wie Schlüssel-, Zertifikatpfad- und Verschlüsselungsalgorithmus. 3.. Verwenden Sie OPE

In diesem Artikel wird erläutert, wie die Leistung der Website verbessert wird, indem Apache -Protokolle im Debian -System analysiert werden. 1. Log -Analyse -Basics Apache Protokoll Datensätze Die detaillierten Informationen aller HTTP -Anforderungen, einschließlich IP -Adresse, Zeitstempel, URL, HTTP -Methode und Antwortcode. In Debian -Systemen befinden sich diese Protokolle normalerweise in /var/log/apache2/access.log und /var/log/apache2/error.log verzeichnis. Das Verständnis der Protokollstruktur ist der erste Schritt in der effektiven Analyse. 2. Tool mit Protokollanalyse Mit einer Vielzahl von Tools können Apache -Protokolle analysiert: Befehlszeilen -Tools: GREP, AWK, SED und andere Befehlszeilen -Tools.

Um eine zusätzliche Servername -Anweisung von Apache zu löschen, können Sie die folgenden Schritte ausführen: Identifizieren und löschen Sie die zusätzliche Servername -Richtlinie. Starten Sie Apache neu, damit die Änderungen wirksam werden. Überprüfen Sie die Konfigurationsdatei, um Änderungen zu überprüfen. Testen Sie den Server, um sicherzustellen, dass das Problem behoben ist.

Es gibt 3 Möglichkeiten, die Version auf dem Apache -Server anzuzeigen: Über die Befehlszeile (apachect -v- oder apache2CTL -v) überprüfen Sie die Seite Serverstatus (http: // & lt; Server -IP- oder Domänenname & GT;/Server -Status) oder die Apache -Konfigurationsdatei (Serversion: Apache/& lt; Versionsnummer & GT;).).
