httpclient はログインをシミュレートします (js を使用して Cookie を設定します)
次のようにコードをコピーします。
<html>
<meta http-equiv='Content-Type' content='text/html'>
<link rel=stylesheet type=text/css href='/bbs.css'>
<script>document.cookie='utmpnum=51;path=/;domain=.' + window.location.host</script>
<script>document.cookie='utmpkey=20154732;path=/;domain=.' + window.location.host</script>
<script>document.cookie='utmpuserid=yay;path=/;domain=.' + window.location.host</script>
<meta http-equiv='更新' content='0; url=/firstpage.php'>
h4ttpclient 4.3:
最も簡単な方法は、取得した Cookie を使用して httpclient をカスタマイズすることです。上記の例によれば、方法は次のようになります。
次のようにコードをコピーします。
CookieStore cookieStore = new BasicCookieStore();
for (int i = 0; i < 3; i++) {
文字列名。
文字列値。
int flag=s.indexOf("document.cookie");
s=s.substring(フラグ+17);
フラグ=s.indexOf('=');
名前=s.substring(0, フラグ);
value=s.substring(flag+1, s.indexOf(';'));
BasicClientCookie クッキー = new BasicClientCookie(名前,
価値);
cookie.setVersion(0);
cookie.setDomain(".www.zju88.org"); //この URL は <span style="font-family: Arial, Helvetica, sans-serif;">window.location.host</ の戻り値に対応します。スパン>
cookie.setPath("/");
cookieStore.addCookie(cookie);
}
// ストアを設定する
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
。建てる();
アンドロイド:
長い間検索しましたが、上記の方法に対応する API が見つかりませんでした。訪問する前にのみ Cookie を追加できます。
次のようにコードをコピーします。
文字列クッキー="";
for (int i = 0; i < 3; i++) {
文字列名。
文字列値。
int flag=s.indexOf("document.cookie");
s=s.substring(フラグ+17);
フラグ=s.indexOf('=');
名前=s.substring(0, フラグ);
value=s.substring(flag+1, s.indexOf(';'));
クッキー += 名前 +"="+値;
if(i!=2)
クッキー+=";";
}
/*
※ネットワークにアクセスするたびに
*/
HttpGet httpget = 新しい HttpGet(url);
httpget.addHeader("Cookie",cookie);
// httpclient に既に Cookie がある場合は、httpclient の Cookie ポリシーを設定する必要がある場合があります。詳しくは、公式 API (:
HttpResponse 応答 = httpclient.execute(httpget);
ps: Java SE を使用している場合は、js を実行する htmlunit クラスを使用することもできます。