java抓取微信运动用户数据请求被拦截

qq_36033506 2017-03-08 05:25:12
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>
...全文
739 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Java旅途 2017-12-21
  • 打赏
  • 举报
回复
我想问问解决了嘛
cdwjlj 2017-07-19
  • 打赏
  • 举报
回复
引用 6 楼 Molly_1994 的回复:
[quote=引用 5 楼 cdwjlj 的回复:] [quote=引用 4 楼 Molly_1994 的回复:]
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");
这个信息你怎么能写windows呢,你看看微信的是多少
大神能不能说下应该怎么写啊 ,网上下的python代码可以,用这个java代码就不行[/quote] 如果python可以,那就不是这个问题,我开始以为是有信息的问题,根据你的结果,可以确定微信知道你不是在微信打开了,你可以抓包看看微信请求数据的头信息是什么[/quote] 知道为什么了,楼主的hwstepranksk和pass_ticket应该写在cookies里 connection.setRequestProperty("Cookie", "hwstepranksk=XXX;pass_ticket=XXX");
cdwjlj 2017-07-07
  • 打赏
  • 举报
回复
引用 4 楼 Molly_1994 的回复:
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");
这个信息你怎么能写windows呢,你看看微信的是多少
大神能不能说下应该怎么写啊 ,网上下的python代码可以,用这个java代码就不行
anakin_feng 2017-07-07
  • 打赏
  • 举报
回复
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");
这个信息你怎么能写windows呢,你看看微信的是多少
cdwjlj 2017-07-07
  • 打赏
  • 举报
回复
还在吗 我的也出现这个问题了
anakin_feng 2017-07-07
  • 打赏
  • 举报
回复
引用 5 楼 cdwjlj 的回复:
[quote=引用 4 楼 Molly_1994 的回复:]
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");
这个信息你怎么能写windows呢,你看看微信的是多少
大神能不能说下应该怎么写啊 ,网上下的python代码可以,用这个java代码就不行[/quote] 如果python可以,那就不是这个问题,我开始以为是有信息的问题,根据你的结果,可以确定微信知道你不是在微信打开了,你可以抓包看看微信请求数据的头信息是什么
Tiramisu_Finn 2017-03-10
  • 打赏
  • 举报
回复
url写错了???
qq_36033506 2017-03-09
  • 打赏
  • 举报
回复
哦,写错了.

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧