個人的な興味で、
トークンを用いているホームページに
ログインしてスクレイピングしてみたいと思って、
書いてみたのですが、そもそもログインからしてうまく行きません。
原因は何なのか出来る限り自分でも調べたのですが、よくわかりません。

以下コードですが、

値として、data[_Token][key]とdata[_Token][fields]はページを手動検索して取得。
ほかは知っているので、4つの値をそれぞれ入力。といった感じです。
値はクロームの機能で調べてみましたが、あってるのかはよくわかりません。

結果は、ログイン失敗ページにリダイレクトされた旨のHTML内容が返ってきます。

まだJAVA歴が数ヶ月しかなく、
WEB関連部分は知識がかなり不足している状態なので、
コードに致命的に間違っている部分があったかもしれません……。
ご教示いただけると助かります。

public static void main(String[] args) throws Exception {


    String USER_AGENT = "Mozilla/5.0";
    String url = "https://www.lancers.jp/user/login";
    String user = "https://www.lancers.jp/mypage";
    HttpGet get = new HttpGet(url);
    HttpPost post = new HttpPost(url);

    RequestConfig reqconf = RequestConfig.custom()
            .setCircularRedirectsAllowed(true)
            .setRedirectsEnabled(true)
            .build();
    List<Header> headers = new ArrayList<Header>();
    headers.add(new BasicHeader("User-Agent", USER_AGENT));
    headers.add(new BasicHeader("Accept-Charset","utf-8"));
    headers.add(new BasicHeader("Accept-Language","ja, en;q=0.8"));
    headers.add(new BasicHeader("Content-Type", "application/x-www-form-urlencoded"));

    CloseableHttpClient client = HttpClientBuilder.create()
            .setRedirectStrategy(new LaxRedirectStrategy())
            .setDefaultRequestConfig(reqconf)
            .setDefaultHeaders(headers)
            .build();

    CloseableHttpResponse loginpage = client.execute(get);
    String loginpageHTML = EntityUtils.toString(loginpage.getEntity(),"UTF-8");
    //JsoupとかでもTokenのみパースは無理ぽかったので、手動で検索‥
    Pattern p = Pattern.compile("(?is)value=\"(.+?)\""); 
    Matcher m = p.matcher(loginpageHTML);
    //トークンを探す。
    String[] TokenArray = new String[6];

    int i= 0;
    while (m.find()) {
        TokenArray[i]=m.group((1));
        i++;
    }
    //TokenArray[1] TokenArray[5]
    //1はkey,5はfields. これをPOST送信に含めてみることにする。

    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("data[_Token][key]",TokenArray[1]));
    params.add(new BasicNameValuePair("data[User][email]","自分のID"));
    params.add(new BasicNameValuePair("data[User][password]","自分のPASS"));
    params.add(new BasicNameValuePair("data[User][auto_login]","0"));
    params.add(new BasicNameValuePair("data[User][referer]","http://www.lancers.jp/"));
    params.add(new BasicNameValuePair("data[_Token][fields]",TokenArray[5]));

    post.setHeader("Connection", "keep-alive");
    post.setHeader("Referer", user);
    post.setHeader("Content-Type", "application/x-www-form-urlencoded");

    post.setEntity(new UrlEncodedFormEntity(params));

    String html="";
    CloseableHttpResponse response = client.execute(post);

    try{
    HttpEntity entity = response.getEntity();
    html=EntityUtils.toString(entity,"UTF-8");
    EntityUtils.consume(entity);
    }finally{
        response.close();
    }

    Document doc = Jsoup.parse(html);
    System.out.println(doc);


}

}