- 浏览: 603042 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
ls1259775:
写的太好了,通俗易懂。
Spring之aop入门实例 -
王庆波-行:
逻辑好清晰,学习了,感谢分享!
关于web.xml中的<welcome-file-list>中的默认首页文件 -
netwelfare:
文章写的不错,不过还有一些东西没有讲解到。可以看这篇文章:Ht ...
HttpClient使用Post和Get提交参数 -
zglxx2004:
感谢!
Eclipse里maven的project报Unbound classpath variable: 'M2_REPO/**/***/***.jar -
没有这个名字:
博主,可以注释一下吗?
HttpClient模仿浏览器cookie请求需要登陆验证的页面
1、淘宝网兑换抵价券页面地址:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm
(该页面需要先登陆淘宝网)
2、具体请求的Action:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm?action=coupon%2Fapply_exchange_action&event_submit_do_winkey_apply=anything
用Get方法也可以,把form参数加到地址栏:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm?action=coupon%2Fapply_exchange_action&event_submit_do_winkey_apply=anything&encash=winkey&winkey=TLD35A0P84
请求上面地址也需要登陆。
3、分析浏览器cookie,打开IE,跟踪页面cookie:
4、具体代码:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm
(该页面需要先登陆淘宝网)
2、具体请求的Action:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm?action=coupon%2Fapply_exchange_action&event_submit_do_winkey_apply=anything
用Get方法也可以,把form参数加到地址栏:
http://auction1.taobao.com/auction/coupon/validate_exchange.htm?action=coupon%2Fapply_exchange_action&event_submit_do_winkey_apply=anything&encash=winkey&winkey=TLD35A0P84
请求上面地址也需要登陆。
3、分析浏览器cookie,打开IE,跟踪页面cookie:
4、具体代码:
import java.io.IOException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; public class GetTaobao { public static void main(String[] args) { HttpClient httpClient = new HttpClient(); String url = "http://auction1.taobao.com/auction/coupon/validate_exchange.htm?action=coupon%2Fapply_exchange_action&event_submit_do_winkey_apply=anything&encash=winkey&winkey=TLD35A0P84"; GetMethod getMethod = new GetMethod(url); getMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //下面一行需要注释掉,不然返回数据是gzip压缩后的乱码 //getMethod.setRequestHeader("Accept-Encoding","gzip, deflate"); getMethod.setRequestHeader("Accept-Language","zh-cn"); getMethod.setRequestHeader("Connection","Keep-Alive"); getMethod.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"); getMethod.setRequestHeader("Host","auction1.taobao.com"); getMethod.setRequestHeader("Cookie","ab=24; ssllogin=; tracknick=honda418; tg=0; _cc_=W5iHLLyFfA%3D%3D; _ad_=KeUKmAWU8kRK0uEGyGeDILt0rx2LXNjnS1iKbArmFo7sRGntneSqx2S39sCoBdou3DWjPzYi; wd=575ec8929dadafeffe02836090e282cd_0db2%2C1447eee8ade9296be6b7da258425dc4e_0db2%2C37b2290e0bd639d66dd4d8af77168ec3_0db1%2C1182a6b21a75703ac5ef344fa3d649e4_0db1%2C3fcce38e4d38df27babbead5c969ce9c_0db2%2Ca0e6427ba253effec0676730d5c77f0a_0db1; ystat_bc_989278=135544014411299247; ystat_bc_1031985=2974207998754953203; ystat_bc_1054537=27069353203149412100; ystat_bc_1056444=14372573111871880121; BX=973hnh14uo4in&b=3&s=v6; cna=6OFMAWOF+lQBAeMdAHmd16M7; ystat_bc_1067067=22398982153378132103; ystat_bc_1087728=8548896732772299499; ystat_bc_1087723=19117999521097358007; ystat_bc_922867=24874028163364390332; batchbuy=; t=437df97fd8c3cd5d80156b001c75330d; cookie2=4aef8e6dedb1d0d1a5f2c81212a99d11; uc1=_yb_=false&_msg_=0&_msg_v=true&cookie21=UtASsssmeWzt&cookie14=UoM%2F0usBU%2BxScw%3D%3D&cookie15=VFC%2FuZ9ayeYq2g%3D%3D&cookie16=URm48syIJ1yk0MX2J7mAAEhTuw%3D%3D&existShop=false&enabledWuiShop=false; _wwmsg_=0%2C0; lastgetwwmsg=MTI0NDU5ODQ2Mg%3D%3D; cookie1=U%2BJ5GUTahHSOO5bIn9bGaA1ayHQNLzyfpduePMzm1rM%3D; _sv_=0; cookie17=UoM%2BH5rp6SQ%3D; _nk_=honda418; _l_g_=Ug%3D%3D"); try { int statusCode = httpClient.executeMethod(getMethod); System.out.println(statusCode); // 301或者302 if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) { Header locationHeader = getMethod.getResponseHeader("location"); String location = null; if (locationHeader != null) { location = locationHeader.getValue(); System.out.println("The page was redirected to:" + location); } else { System.err.println("Location field value is null."); } return; } if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + getMethod.getStatusLine()); } byte[] responseBody = getMethod.getResponseBody(); System.out.println(new String(responseBody)); } catch (HttpException e) { System.out.println("Please check your provided http address!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { getMethod.releaseConnection(); } } }
发表评论
-
【转帖】解码OutOfMemoryError:PermGen Space
2013-12-30 11:22 1099本文由 ImportNew - Peter Pan ... -
JBoss下面部署应用的Log4j日志不能显示问题
2012-08-31 13:36 5535在应用的WEB-INF目录下面增加该文件:jboss-depl ... -
WEB容器启动的时候,加载常用数据到内存
2010-08-07 10:41 5715项目中,有很多数据是基本上不变的,同时用到的频率还比较高,如果 ... -
java.lang.OutOfMemoryError: PermGen space的解决办法
2010-05-31 15:38 1734修改tomcat 的catalina.bat文件,加入: se ... -
使用UrlRewriteFilter动态URL静态化
2010-04-20 15:42 1623先看两种URL的写法: 引用http://www.xxx.co ... -
Eclipse里maven的project报Unbound classpath variable: 'M2_REPO/**/***/***.jar
2010-04-19 16:49 11103Eclipse里maven的project报Unbound c ... -
java序列化(Serializable)的作用和反序列化
2010-03-24 11:03 5426这里转载一篇讲解java序 ... -
java.util.Collections.sort对List进行排序
2010-03-23 16:41 2038List<userDO> list = new A ... -
【转贴】Tomcat解析之简单web服务器
2010-02-11 10:46 1312gogole_09 写道 之前有java ... -
iText生成PDF文件,每页显示页码以及总页数的实现
2009-11-10 16:35 18303如果想在页眉或者页脚加上第x页这样的信息,用普通的Header ... -
iText导出PDF使用小结
2009-11-10 15:42 4236新建一PDF页面,设置输出流: Document docume ... -
jar包里面的代码如何读取jar包中的配置文件?
2009-10-09 16:28 4679先看代码目录结构: src/weather/ Quer ... -
JAVA登陆MSN并且获取联系人列表
2009-09-22 14:15 2850package msn; import net.sf. ... -
实战篇:设计自己的Annotation
2009-08-26 16:33 1335【转载】From:http://lighter.iteye.c ... -
支付宝外部商家接口中的return_url和notify_url
2009-08-25 15:34 5250return_url: 1、同步返回接口,作为参数传递给支付宝 ... -
多JBOSS公存时需要修改的端口号
2009-07-13 13:56 19401.修改server/default/conf/jboss_s ... -
struts.properties配置
2009-07-07 11:04 1270struts.properties文件在WEB-INF/cla ... -
request.getHeader("REFERER")获取来访页面地址
2009-07-01 10:46 4609request.getHeader("REFERER ... -
split分隔特殊字符"| ^ . *"等特殊字符
2009-06-18 16:16 4169String a = "china|hangzhou ... -
如何让tomcat支持软链接
2009-06-15 20:56 3540最近在做个图片上传的页面,需要把上传的图片放到tomcat部署 ...
相关推荐
2. **登录和cookie管理**:处理登录过程,保存和发送cookie,以便于访问需要登录的页面。 3. **模拟浏览器行为**:设置User-Agent,处理JavaScript,支持cookies,模仿真实用户的行为。 4. **反反爬策略**:应对...
10. **再次请求**:登录成功后,你可以使用相同的`HttpClient`实例发送后续的请求,由于保留了Cookies,服务器应该会认为这些请求来自已登录的用户。 以上步骤只是一个基础的示例,实际使用时可能需要根据目标网站...
模拟登录的核心是模仿浏览器发送登录请求的过程,通常涉及以下几个步骤: 1. 获取登录页面:首先,我们需要发送一个GET请求到登录页面,获取登录表单的HTML内容,从中解析出用户名和密码输入框的名称或ID。 2. 构造...
4. **设置Cookie和Header**:根据登录页面的响应,设置Cookie和必要的Header,比如`User-Agent`,以模仿浏览器行为。 5. **发送登录请求**:执行POST请求,模拟用户提交登录表单。 6. **处理登录响应**:接收...
2. 添加请求头,包括User-Agent、Cookie等,以模仿浏览器行为。 3. 设置请求体,包含登录所需的用户名和密码,通常使用POST参数形式。 4. 发送请求并接收响应,处理返回的HTML内容,提取session或cookie信息,以保持...
注意,为了模仿浏览器的行为,可能还需要设置cookies和headers。 5. **处理响应**:接收服务器的响应,检查是否登录成功。成功的话,可能会获得一个会话cookie,用于后续的API请求。 在提供的"QQExmailLogin"文件...
在模拟登录过程中,C#需要利用HttpClient类或者WebClient类来发送POST请求,模仿用户填写用户名和密码并提交表单的行为。这通常涉及到处理URL编码、设置请求头(如User-Agent)以及构造正确的请求体。 验证码的目的...
3. **请求头模拟**:模仿浏览器发送请求,防止被识别为机器人。 4. **Cookie管理**:处理登录验证或会话保持。 5. **延迟和重试策略**:防止对目标网站造成过大压力,同时确保数据获取的成功率。 6. **动态内容抓取*...
- **User-Agent**:模仿浏览器发送请求,设置合理的User-Agent字符串避免被服务器识别为爬虫。 - **延迟和间隔**:设置请求之间的延迟,避免过于频繁的请求引起服务器反感。 - **代理IP**:使用代理IP池,减少...