自动登陆网站
来源:互联网 发布:知乎痴情叔被骂 编辑:程序博客网 时间:2024/05/21 07:07
以美国adidas官网为例,思路就是模拟用户操作的登陆请求。下面摘取部分主要代码(Java)。
登陆函数
private ExecResult<Document> signin(String email, String password) { // sign in and get cookie try { Elements inputElements = doc.select(".auth-validate-form input"); List<NameValuePair> params = AdidasUtils.fillParamsWithInputElements(inputElements); if (params == null || params.size() <= 0) { inputElements = doc.select(".auth-pagelet-container form input"); params = AdidasUtils.fillParamsWithInputElements(inputElements); } params = AdidasUtils.fillLoginParams(email, password, params); AdidasUtils.getHttpPostResponseWithDocument(AdidasConstants.SIGNIN_URL, doc.location(), params, httpsClient); } catch (Exception e) { LogUtils.info(AdidasConstants.ERROR_PREFIX + e.toString()); } return createResult(true, doc, null); }
public static List<NameValuePair> fillParamsWithInputElements(Elements inputElements) { List<NameValuePair> params = new ArrayList<NameValuePair>(); LogUtils.info("Params size: " + inputElements.size()); for (Element inputElement : inputElements) { if (!StringUtils.isBlank(inputElement.attr("name"))) { if (!StringUtils.isBlank(inputElement.attr("type")) && "radio".equalsIgnoreCase(inputElement.attr("type")) && !inputElement.hasAttr("checked")) { continue; } params.add(new BasicNameValuePair(inputElement.attr("name"), inputElement.val())); } } return params; }
设置登陆参数
public static List<NameValuePair> fillLoginParams(String email, String password, List<NameValuePair> params) { List<NameValuePair> filteredList = filterOutInputValues(AdidasConstants.LOGIN_BLACK_KEYS, params); filteredList.add(new BasicNameValuePair("username", email)); filteredList.add(new BasicNameValuePair("password", password)); filteredList.add(new BasicNameValuePair("remembermeParam", "true")); filteredList.add(new BasicNameValuePair("signinSubmit", "Sign in")); return filteredList; }
发送请求
public static Document getHttpPostResponseWithDocument(String url, String referrer, List<NameValuePair> params,DecompressingHttpClient httpClient) throws IOException { response = getHttpPostResponse(url, referrer, params, httpClient); Document doc = Jsoup.parse(EntityUtils.toString(response.getEntity(), "UTF-8")); EntityUtils.consume(response.getEntity()); return doc; }public static HttpResponse getHttpPostResponse(String url, String referrer, List<NameValuePair> params, DecompressingHttpClient httpClient) throws IOException { HttpPost post = new HttpPost(url); setHeaders(post); if (!StringUtils.isBlank(referrer)) { post.setHeader("Referer", referrer); } if (params != null) { post.setEntity(new UrlEncodedFormEntity(params)); for (NameValuePair pair : params) { print(pair.getName() + "=" + pair.getValue()); } } return httpClient.execute(post); }
阅读全文
0 0
- 自动登陆网站
- 基于c#实现网站的自动登陆
- perl 自动登陆网站发短信
- 利用post实现对一些网站的自动登陆
- C# webBrowser自动登陆 windows集成验证的网站
- C# webBrowser自动登陆 windows集成验证的网站
- python自动登陆有cookie验证的网站
- python实现带验证码网站的自动登陆
- 危险,不要随意让网站记住密码自动登陆!
- 危险,不要随意让网站记住密码自动登陆!
- 自动登陆
- PHP网站——返回上一页(登陆后自动到登陆前的界面)
- 呵呵,开机自动登陆,注销自动登陆
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- WinForm : 利用webBrowser完成填充数据并 自动登陆某网站。。。。。。。
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- c# 实现网页上用户自动登陆|asp.net 模拟网站登录
- java进制转换
- 扩展.NET 2.0标准配置文件
- 使用 Tango 开发 Unity 应用的原理
- Huffman树
- System.Drawing.Graphics读取带有索引的图片及思考
- 自动登陆网站
- 匈牙利算法+二分答案 BZOJ 4443 小凸玩矩阵 SCOI 2015 题解
- 第2章 windows下搭建开发环境
- 听孔文达老师《IT职业规划经验谈》WEBCAST笔记
- Deep Learning论文笔记之(五)CNN卷积神经网络代码理解
- 在应用URLRewrite功能后自动输出重写过的URL
- ASCII码排序(HDU)
- FreeMarker小例子一枚(转)
- 编程习惯