我制作了一个简单的程序来登录Instagram网站。
我的原始代码在java主类中工作,但现在我偶然发现了一些奇怪的东西,当我把代码放入时,我在另一个类中使用它,所以我可以在其他类中加载和使用它来自不同包的课程,不再访问该网站。
我只是对代码做了一些微不足道的更改,比如接收一些参数(比如用户名和密码)。
主类的原始代码:
WebClient webClient = new WebClient(BrowserVersion.CHROME);
//configuracion de opciones de webbrowser
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
HtmlPage page = (HtmlPage) webClient.getPage(authorizationUrl);
WebResponse response = page.getWebResponse();
response.cleanUp();
final HtmlForm loginForm = page.getForms().get(0);
// revisar si la sesion ha expirado
if(loginForm!=null){ //la session ha expirado relogear
//se pone el usuario en el input html por nombre
final HtmlTextInput txtUser = loginForm.getInputByName(usuarioInputName);
txtUser.setValueAttribute("oestedev");
//se pone el password en el input html por nombre
final HtmlPasswordInput txtpass = loginForm.getInputByName(passwordInputName);
txtpass.setValueAttribute("oeste18");
//boton submit por valor
final HtmlSubmitInput submitLogin = loginForm.getInputByValue(submitLoginButtonValue);
final HtmlPage returnPage = submitLogin.click();
System.out.println( returnPage.getUrl());
String urlAcceso = returnPage.getUrl().toString();
String[] parteUrl = urlAcceso.split("=");
// String urlAuth = parteUrl[0]; // url de autorizacion
codigo = parteUrl[1]; // codigo para obtener el access token
System.out.println(codigo);
}
webClient.close();
来自我用作库的类:
public void realizarConexion(String usuario,String password) throws IOException{
String authorizationUrl = service.getAuthorizationUrl(TOKEN_ACCESO);
String codigo = null;
WebClient webClient = new WebClient(BrowserVersion.CHROME);
//configuracion de opciones de webbrowser
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setRedirectEnabled(true);
//acceso a la url desde webclient
HtmlPage page = (HtmlPage) webClient.getPage(authorizationUrl);
WebResponse response = page.getWebResponse();
response.cleanUp();
final HtmlForm loginForm = page.getForms().get(0);
// try to login to the site
if(loginForm!=null){ //la session ha expirado relogear
//se pone el usuario en el input html por nombre
HtmlTextInput txtUser = loginForm.getInputByName(usuarioInputName);
txtUser.setValueAttribute(usuario);
//se pone el password en el input html por nombre
HtmlPasswordInput txtpass = loginForm.getInputByName(passwordInputName);
txtpass.setValueAttribute(password);
//boton submit por valor
HtmlSubmitInput submitLogin = loginForm.getInputByValue(submitLoginButtonValue);
//accede al sitio
HtmlPage returnPage = submitLogin.click();
String urlAcceso = returnPage.getUrl().toString();
System.out.println(urlAcceso);// to check if i got to the correct url
String[] parteUrl = urlAcceso.split("=");
codigo = parteUrl[1]; // codigo para obtener el access token
}
Verifier verifier = new Verifier(codigo);
Token accessToken = service.getAccessToken(TOKEN_ACCESO, verifier);
instagram = new Instagram(accessToken);
webClient.close();
}