楔子
一直好奇,对于需要登录的网站,只有登录才能进行操作。代码怎么
模拟登录并操作
.花费了一上午的时间。最后发现一个代码变量写错了,导致花费了更多的时间。不过,这个错误,让我更多的了解了一些别的内容。这个过程中,存在一个问题:就是网站登录后会重定向,导致浏览器自带的调试工具无法获取登录的请求信息以及传递的参数,这个问题,使用 fiddler4可以解决
。
1:模拟登录
1.1 谷歌浏览器查看cookies
使用谷歌浏览器查看cookie chrome://settings/siteData
使用fiddler
登录时获取请求头以及提交信息。
@Test
public void testName() throws Exception {
String loginUrl = ""*****************");";
Map<String, String> headMap = new HashMap<String, String>();
headMap.put("Host", ""*****************");");
headMap.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0");
headMap.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
headMap.put("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
headMap.put("Accept-Encoding", "gzip, deflate");
headMap.put("Referer", "*****************");
headMap.put("Content-Type", "application/x-www-form-urlencoded");
headMap.put("Content-Length", "83");
headMap.put("Connection", "keep-alive");
headMap.put("Upgrade-Insecure-Requests", "1");
Map<String, String> dataMap = new HashMap<String, String>();
dataMap.put("username", "zbdx1314");
dataMap.put("password", "qwe12345");
Response post = Jsoup.connect(loginUrl).headers(headMap).data(dataMap).followRedirects(true).method(Method.POST).execute();
System.out.println(post.body());
/* 这些cookie在 签到以及其他时候使用*/
Map<String, String> cookies2 = post.cookies();
}
2 签到
不再重复,和上面类似。需要使用的上面的登录后的cookie。
后记
没有广泛测试,单独针对我的需要的采集操作的。