最近一直在思考着如何通过代码去伪装或实现人工自然浏览网页的效果,起初能想到的是用WebBrowser实现这一效果,需要达到的功能预想有以下几点:

1、自动刷新

2、模拟人工下拉滚动条并停留一段时间;

3、可以刷IP、刷流量;

4、可以增加任意来访域名;

5、自动随机点击站内页面;

6、自动随机点击站内广告;

7、自动清除Cookie、Session;

8、能够模拟搜索引擎搜索关键字并点击到指点页面;

一、WebBrowser中获取Cookie生成CookieContainer

  1. 1.WebBrowser中获取Cookie
  2.  
  3. CookieContainer myCookieContainer = new CookieContainer();
  4.  
  5. string cookieStr = webBrowser1.Document.Cookie;
  6. string[] cookstr = cookieStr.Split(';');
  7. foreach (string str in cookstr)
  8. {
  9. string[] cookieNameValue = str.Split('=');
  10. Cookie ck = new Cookie(cookieNameValue[].Trim ().ToString(), cookieNameValue[].Trim ().ToString());
  11. ck.Domain = "www.google.com";
  12. myCookieContainer.Add(ck);
  13. }
  14.  
  15. WebClient设置cookie!
  16. WebClient wc = new WebClient();
  17. wc.Headers.Add("Cookie", "PHPSESSID=" + cookie + ";");
  18. // 注意,这里是Cookie,不是Set-Cookie
  19. byte[] re = wc.UploadData(Global.RootPath + "test.php", new byte[]);
  20. System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
  21. string str = converter.GetString(re);
  22.  
  23. . WebBrowser中设置Cookie
  24. public partial class WebBrowserControl : Form
  25. {
  26. private String url;
  27.  
  28. [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
  29. public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
  30.  
  31. public WebBrowserControl(String path)
  32. {
  33. this.url = path;
  34. InitializeComponent();
  35.  
  36. // set cookie
  37. InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
  38.  
  39. // navigate
  40. webBrowser.Navigate(url);
  41. }
  42. }
  43.  
  44. .将WebBrowsercookie信息传给HttpWebRequest
  45.  
  46. 先建一个"CookieContainer" WebBrowser中的Cookie保存在里面
  47.  
  48. //在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中
  49. CookieContainer myCookieContainer = new CookieContainer();
  50.  
  51. //String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
  52. string cookieStr = webBrowser1.Document.Cookie;
  53. string[] cookstr = cookieStr.Split(';');
  54.  
  55. foreach (string str in cookstr)
  56. {
  57. string[] cookieNameValue = str.Split('=');
  58. Cookie ck = new Cookie(cookieNameValue[].Trim().ToString(), cookieNameValue[].Trim().ToString());
  59. ck.Domain = "www.abc.com";//必须写对
  60. myCookieContainer.Add(ck);
  61. }
  62.  
  63. HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp");
  64. hreq.Method = "POST";
  65. hreq.ContentType = "application/x-www-form-urlencoded";
  66.  
  67. //自己创建的CookieContainer
  68. hreq.CookieContainer = myCookieContainer;
  69.  
  70. string postdata = "id=2005&action=search&name=";
  71. byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
  72. hreq.ContentLength = byte1.Length;
  73.  
  74. Stream poststream = hreq.GetRequestStream();
  75. poststream.Write(byte1, , byte1.Length);
  76. poststream.Close();
  77.  
  78. HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();
  79.  

二、Webbrowser清除Cookie及session

  1. //方法一:调用 wininet.dll清除cookie (推荐)
  2. SuppressWininetBehavior();
  3.  
  4. //方法二:删除用户登录后的信息,这里相当于浏览器的注销功能,使用的是ie自带的功能 (推荐)
  5. HtmlDocument document = wb.Document;
  6. document.ExecCommand("ClearAuthenticationCache", false, null);
  7.  
  8. //方法三:删除本机cookie 此方法会弹出ie清除cookie的弹出框
  9. //Temporary Internet Files (Internet临时文件)
  10. //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
  11. //Cookies
  12. //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
  13. //History (历史记录)
  14. //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
  15. //Form. Data (表单数据)
  16. //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
  17. //Passwords (密码)
  18. //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32
  19. //Delete All (全部删除)
  20. //ShellExecute(IntPtr.Zero, "open", "rundll32.exe", " InetCpl.cpl,ClearMyTracksByProcess 2", "", ShowCommands.SW_HIDE);
  21. ShellExecute(IntPtr.Zero, "open", "rundll32.exe", " InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE);
  22.  
  23. //方法四:使用webbrowser自带的清coookie的方法 (不推荐,清不掉session,实测无效)
  24. wb.Document.Cookie.Remove(, (wb.Document.Cookie.Count() - ));
  25.  
  26. //方法五:使用js清除cookie (不推荐,清不掉session)
  27. wb.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())");
  28. //var a,b,c,e,f;
  29. //f=0;
  30. //a=document.cookie.split('; ');
  31. //b='.'+'baidu.com';
  32. ////b='.'+'www.baidu.com';
  33. //for(e=0;e<a.length;e++){
  34. // //b='.'+location.host;
  35. // b=b.replace(/^(?:%5C.|[^%5C.]+)/,'');
  36. // c=location.pathname;
  37. // c=c.replace(/.$/,'');
  38. // ck = a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString();
  39. // console.log(ck);
  40. // document.cookie=ck;
  41. //}
  42.  
  43. //方法六:使用InternetSetCookie给cookie赋null值 (不推荐)
  44. //也可以给此Cookie赋空值:InternetSetCookie
  45. //InternetSetCookie("http://.qq.com/", NULL, "uin=; PATH=/; DOMAIN=qq.com");

其中方法三中的ClearMyTracksByProcess 可进行选择设置 :

Temporary Internet Files  (Internet临时文件)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

Cookies

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

History (历史记录)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

 Form. Data (表单数据)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

 Passwords (密码)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

 Delete All  (全部删除)

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

注:删除Cookie在测试中一直效果不是很好,至少无法在cnzz统计中刷新到独立访客,当禁止了IE中的Cookie时,IP数与独立访客数就可以同时增长啦。

WebBrowser的Cookie操作之流量刷新机的更多相关文章

  1. 网上收集的WebBrowser的Cookie操作

    原文:网上收集的WebBrowser的Cookie操作 1.WebBrowser设置Cookie Code highlighting produced by Actipro CodeHighlight ...

  2. C# WebBrowser HttpWebRequest Cookie 的结合运用。

    在WebBrowser下对网页进行操作其实是一件挺轻松的事情,他可以很方便实现自定义的网站访问习惯.而WebBrowser毕竟是对MS原生 控件的封装,当我们使用C#下的WebBrowser尤其是这样 ...

  3. JavaScript cookie操作实现点赞功能

    JavaScript cookie操作实现点赞功能 参考实现原理,但是代码不够简洁,简洁代码参考:js操作cookie 实现一个点赞功能十分简单,主要问题在于不能重复点赞.  若是一个有用户的网站,可 ...

  4. 获取WebBrowser全cookie 和 httpWebRequest 异步获取页面数据

    获取WebBrowser全cookie [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true) ...

  5. WebBrowser设置Cookie

    在winform里面经常会用到WebBrowser,这是一个难点就是如何设置cookies,注意,Docment对象是只读的,所以WebBrowser.Docment.cookie也就只有get方法, ...

  6. Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作

    超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...

  7. cookie操作大全

    JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...

  8. js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法

    //是否存在指定函数 function isExitsFunction(funcName) {    try {        if (typeof(eval(funcName)) == " ...

  9. JS封装cookie操作函数实例(设置、读取、删除)

    本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

随机推荐

  1. php使用post方式获得文件扩展名

    <form action="" method="post"> <input type="file" value=" ...

  2. C# 设置word文档页面大小

    我们知道,在MS word中,默认的页面大小是letter(8.5’’x11’’),除此之外,word还提供了其他一些预定义的页面大小,如Legal (5.4’’x14’’),A3 (11.69’’x ...

  3. iOS 如何设置导航的滑动返回手势, 和系统饿一样

    iOS 7 滑动返回那些事儿 2014/05/17 Wei .entry-meta .entry-header 在智能机越来越普及,屏幕越做越大的当下,滑动返回手势已经成为了一个应用的标配功能,甚至可 ...

  4. 学习Linux下s3c2440的USB鼠标驱动笔记

    1.ARM-Linux下USB驱动程序开发1.1.1.linux下USB配置:*********(MassStorage:存储设备)********************************** ...

  5. (十一)WebGIS中要素(Feature)的设计

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在GIS中元素一般分为点元素,线元素,面元素以及symbol ...

  6. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  7. sql server实现自定义分割月功能

    本文目录列表: 1.为何出现自定义分割月需求 2.sql server实现自定义分割月功能 3.测试验证效果 4.总结语 5.参考清单列表   1.为何出现自定义分割月的需求   今天梳理一个平台的所 ...

  8. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  9. C#中实现对象间的更新操作

    最近工作的时候遇到一个问题,根据Web端接收到的对象obj1,更新对应的对象值ogj2.先判断obj1中属性值是否为null, 若不等于null,则更新obj2中对应属性值:若等于null,则保持ob ...

  10. 尝试加载 Oracle 客户端库时引发 BadImageFormatException

    尝试加载 Oracle 客户端库时引发 BadImageFormatException 工程师给计算机诊断,就像医生给病人诊断一样,很多同样的症状,可能是由多种截然不同的原因导致的.   最近进行C# ...