小弟 在登陆的时候进行抓包、但是没抓到····· (
一定是我方法不对)、后面没办法了,想了很久我们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
[email protected]
* @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);
// 加载URL内容
webview.loadUrl(" https://passport.sina.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F%3Fjumpfrom%3Dweibocom");
// 设置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);
}
});
}
}
}
源码
点击下载源码