折腾:
【未解决】用Java实现百度模拟登陆
期间,已经可以用OkHttp获取响应了。
但是需要去:获取response中的cookie,和管理cookie
okhttp cookie
别人建议用:PersistentCookieJar
去下载
结果下载得到
PersistentCookieJar-1.0.1.zip
解压却没有jar
download PersistentCookieJar jar
PersistentCookieJar,在SharedPreferences上,基于 OkHttp 3的持久CookieJar实现,下载PersistentCookieJar的源码_GitHub_帮酷
下载不到PersistentCookieJar的jar
去IDEA的Maven中搜
结果搜出来的不是:
【已解决】Java用IntelliJ IDEA如何用gradle去安装第三方库PersistentCookieJar
然后继续调试,看看访问多个百度的url,之后是否会自动更新cookie
此处显示确保代码正常运行:
把百度首页的html保存后,点击用浏览器打开:
效果是:
代码代码写了:
public class EmulateBaiduLogin { // OkHttpClient client = new OkHttpClient(); ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)); OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .addInterceptor(new ResponseInterceptor()) .cookieJar(cookieJar) .build();
但是却不知道如何写import这个PersistentCookieJar:
【无法解决】Java的IntelliJ IDEA中如何导入PersistentCookieJar这个库
换用别的,普通java支持的库
java cookie lib
okhttp3 cookie lib
去试试:
compile "com.squareup.okhttp3:okhttp-urlconnection:3.8.1"
auto handle okhttp3 cookie
【未解决】Java给OkHttp加cookie出错:Cannot resolve symbol ‘setCookiePolicy’和Unknown class: ‘CookiePolicy.ACCEPT_ALL’
另外用:
CookieJar cookieJar = new CookieJar(); OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .addInterceptor(new ResponseInterceptor()) .cookieJar(cookieJar) // .cookieJar(new JavaNetCookieJar(cookieManager)) .build();
结果:
‘CookieJar’ is abstract; cannot be instantiated
结果是Android的
java Cannot resolve symbol setCookiePolicy
好像是需要自己去实现,比如:
CookieJar cookieJar = new CookieJar() { private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { cookieStore.put(url.host(), cookies); } @Override public List<Cookie> loadForRequest(HttpUrl url) { List<Cookie> cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList<Cookie>(); } }; OkHttpClient httpClient = new OkHttpClient.Builder() .cookieJar(cookieJar) .build();
好麻烦。
抽空参考:
【已解决】Java给OkHttp加cookie出错:Cannot resolve symbol setCookiePolicy和Unknown class CookiePolicy.ACCEPT_ALL
然后就去调试看看,多次访问不同页面,看看cookie是否有变化
然后确定java弄爬虫还是效率太低,还是去换Python弄吧:
【记录】Mac中用Python去模拟百度登陆