Android webview 自动登陆新浪微博实现(原理)

小弟 在登陆的时候进行抓包、但是没抓到····· (

一定是我方法不对)、后面没办法了,想了很久我们WEB上面可以进行模拟用户操作 ,下面是我总结出来的方法。

如有不足、请大牛指点。     小弟在此谢谢


关于webview自动登陆的问题  思路如下

1、在电脑上面的 “新浪微博登陆” 和手机上的URL 是不一样的、我们需要用到的工具 chrome 浏览器 在浏览器里面下载 User-Agent Switcher插件。切换到Android U  User-Agent标识(小伙伴们可以自己体验一下、网页会被重定向);

2、我们拿到了手机的URL 、先用webview 加载URL 跑起来看看····  第一眼看到登陆的页面

3、那么问题来了、我们怎么进行登陆、

4、在chrome 上面使用User-Agent Switcher插件,切换到Android U  User-Agent标识。审查元素、找到账号密码输入框、登陆按钮的ID。

5、在模拟用户点击···

6、代码中有很多不足、希望我总结的资料能帮到大家。


代码如下


{CSDN:CODE:/**
 *
* @Description: 自动登陆新浪微博
* @author xiexiupu@live.com  
* @date 2015-3-24 下午12:10:16
* @version V1.0
 */

public class MainActivity extends Activity {
 private WebView webview;
 private EditText et;
 private Button bt;
 String UA = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1653.0 Safari/537.36";
 // String UA_two =
 // "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0";
 @SuppressLint("JavascriptInterface")
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  bt = (Button) findViewById(R.id.bt);
  et = (EditText) findViewById(R.id.et);
  webview=(WebView) findViewById(R.id.my_web);
  
  // 设置Web ViewUA标识
  // webview.getSettings().setUserAgentString(UA);
  // 设置WebView能够执行javaScript脚本
  webview.getSettings().setJavaScriptEnabled(true);
  // 数据保存
  // webview.getSettings().setSaveFormData(true);
  // webview.getSettings().setSavePassword(true);
  // 设置webview视图客户端
  webview.setWebViewClient(new HelloWebViewClient());// 有个新建的私有类
  // 设置可以支持缩放
  webview.getSettings().setSupportZoom(true);
  // 设置出现缩放工具
  webview.getSettings().setBuiltInZoomControls(true);
  // 扩大比例的缩放
  webview.getSettings().setUseWideViewPort(true);
  // 自适应屏幕
  // webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
  webview.getSettings().setLoadWithOverviewMode(true);
  webview.getSettings().setUseWideViewPort(true);
  int sysVersion = Integer.parseInt(VERSION.SDK);
  // 隐藏缩放按钮
  WebViewZoomControlUtil.setZoomControl(sysVersion, webview);
  bt.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    // 加载URL内容
    webview.loadUrl("http://" + et.getText().toString().trim());
   }
  });
 }
 // 设置回退
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
   webview.goBack();
   return true;
  } else {
   return super.onKeyDown(keyCode, event);
  }
 }
 private class HelloWebViewClient extends WebViewClient {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
   // TODO Auto-generated method stub
   view.loadUrl(url);
   return true;
  }
  @Override
  public void onReceivedError(WebView view, int errorCode,
    String description, String failingUrl) {
   // TODO Auto-generated method stub
   Toast.makeText(MainActivity.this, "加载错误", Toast.LENGTH_LONG).show();
   super.onReceivedError(view, errorCode, description, failingUrl);
  }
  @Override
  public void onPageFinished(WebView view, String url) {
   // TODO Auto-generated method stub
   super.onPageFinished(view, url);
   //输入账号密码和密码
   LoginByPassword("输入你的新浪微博账号", "输入你的新浪微博密码");
  }
 }

 //模拟用户登陆
 public void LoginByPassword(String username, String password) {
  final String strJS = String
    .format("javascript:document.getElementById('loginName').value='%s';document.getElementById('loginPassword').value='%s';"
      + "document.getElementById('loginAction').click();",
      username, password);
  webview.post(new Runnable() {
   public void run() {
    webview.loadUrl(strJS);
   }
  });
 }
}
}


源码

点击下载源码




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值