java抓取微信运动用户数据请求被拦截
package wxdemo;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.zip.GZIPInputStream;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import utils.MyX509TrustManager;
public class WxTest {
public static void main(String[] args) {
WxTest wt = new WxTest();
wt.getHtmlString("https://hw.weixin.qq.com/steprank/step/personal?openid=o95gOt3LDXIdZ4OsZnvzkJGUHHHg&hwstepranksk=Wxe-WJ44N7TSVJQEdrRJEg4Yb6LO-OQLW9AxlBK_5mfQ1R1E,pass_ticket=Uhbx%2FcxwYqPE2b8T1Hp4lBdmcLsH2DcAO9UtBtLOFYWAXjCTlwuC6OevOYZjDAkN");
}
/**
* 获取网页源码
* @return
*/
public String getHtmlString(String targetUrl) {
String content = null;
HttpURLConnection connection = null;
try {
URL url = new URL(targetUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// connection.setRequestProperty("hwstepranksk", "Wxe-WJ44N7TSVJQEdrRJEg4Yb6LO-OQLW9AxlBK_5mfQ1R1E");
// connection.setRequestProperty("pass_ticket", "Uhbx%2FcxwYqPE2b8T1Hp4lBdmcLsH2DcAO9UtBtLOFYWAXjCTlwuC6OevOYZjDAkN");
connection.setRequestProperty("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
connection.setRequestProperty("Accept-Encoding", "gzip, deflate");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,en-us;q=0.6,en;q=0.5;q=0.4");
connection.setRequestProperty("user-agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.27.400 QQBrowser/9.0.2524.400");
connection.setRequestProperty("Charset", "utf-8");
connection.connect();
if (200 == connection.getResponseCode()) {
InputStream inputStream = null;
if (connection.getContentEncoding()!=null&&connection.getContentEncoding().length()>0) {
String encode = connection.getContentEncoding().toLowerCase();
if (encode!=null&&encode.length()>0 && encode.indexOf("gzip") >= 0) {
inputStream = new GZIPInputStream(connection.getInputStream());
}
}
if (null == inputStream) {
inputStream = connection.getInputStream();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "gbk"));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line).append("\n");
}
content = builder.toString();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
System.out.println(content);
return content;
}
}
结果:<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
</head>
<body>
<script type="text/javascript">
var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
var isAndroid = ua.indexOf('android') != -1;
var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);
if (!isWeixin) {
document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';
document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信客户端打开链接</h4></div></div>';
}
</script>
</body>
</html>