自动登陆带有google-analytics 的网站

最近要从某网站上采集一些双色球的信息,本来是想从中彩网上获取的,但那个服务器的反映速度真的让人无法接受,于是另外找了一个城市的网站。

在进行数据抓取的过程中,发现有几个cookie是浏览器自己产生的,一开始心里没底怎么弄,因为在调试的时候老报错,后来又把它的urchin.js下载下来,放在本机上调试,呵呵,现在才知道js文件也可以调试的,开心!

不过不管怎么弄,都一直报错,非常怀疑那些js代码在本机跑的时候是不是有什么不一样(偶对js代码只是刚刚看懂),但调试了很久,还是不对。

但我想非常没有道理,于是我从头开始找其它cookie的错误,再找postdata的错误,终于在postdata中找到了,原来掉了一个字母,我狂晕。

在这里说一下带有google-analytics 的网站

它post 的cookie数据包含:

__utma Sent 195722668.1791181037.1243267423.1243317013.1243324232.8 
__utmb Sent 195722668.2.10.1243324232
__utmc Sent 195722668
__utmz Sent 195722668.1243267423.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)

 

上面的数据其实我们并不要关心,这是我花最多时间去研究的,其实最后提交的时候加上就可以了。当然,你可以用随机数的方式替换一下。不过第一串数字195722668是不能变的,这是这个网站域名的hash值。

写完了,心里真是开心。在这里公布一个有用的类,主要是来处理postdata的,相当于一个hashtable里,读存 key 和value

调用示例:

RequestData pstData = new RequestData();

pstData.AddField("txtPassword", "");

pstData.AddField("txtUserName", "");

pstData.AddField("txtValidateCode", "");

 

读取

pstData.GetData()

 

自动登陆带有google-analytics 的网站 using  System;
自动登陆带有google-analytics 的网站
using  System.Collections.Generic;
自动登陆带有google-analytics 的网站
using  System.Linq;
自动登陆带有google-analytics 的网站
using  System.Text;
自动登陆带有google-analytics 的网站
using  System.Collections;
自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站
namespace  SSQ
自动登陆带有google-analytics 的网站
{
自动登陆带有google-analytics 的网站    
public class RequestData
自动登陆带有google-analytics 的网站    
{
自动登陆带有google-analytics 的网站        Hashtable hash 
= new Hashtable();
自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站        
public RequestData()
自动登陆带有google-analytics 的网站        
{
自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站        }

自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站        
public string GetData()
自动登陆带有google-analytics 的网站        
{
自动登陆带有google-analytics 的网站            
string r = "";
自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站            
foreach (string key in hash.Keys)
自动登陆带有google-analytics 的网站            
{
自动登陆带有google-analytics 的网站                
if (r.Length > 0) r += "&";
自动登陆带有google-analytics 的网站                r 
+= key + "=" + hash[key];
自动登陆带有google-analytics 的网站            }

自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站            
return r;
自动登陆带有google-analytics 的网站        }

自动登陆带有google-analytics 的网站        
public void Clear()
自动登陆带有google-analytics 的网站        
{
自动登陆带有google-analytics 的网站            hash.Clear();
自动登陆带有google-analytics 的网站        }

自动登陆带有google-analytics 的网站        
自动登陆带有google-analytics 的网站        
public int Count
自动登陆带有google-analytics 的网站        
{
自动登陆带有google-analytics 的网站            
get{return hash.Count;}
自动登陆带有google-analytics 的网站             
自动登陆带有google-analytics 的网站        }

自动登陆带有google-analytics 的网站        
public void AddField(string Field, string Value)
自动登陆带有google-analytics 的网站        
{
自动登陆带有google-analytics 的网站 
自动登陆带有google-analytics 的网站            
foreach (string key in hash.Keys)
自动登陆带有google-analytics 的网站            
{
自动登陆带有google-analytics 的网站                
if (Field == key)
自动登陆带有google-analytics 的网站                
{
自动登陆带有google-analytics 的网站                    hash[Field] 
= System.Web.HttpUtility.UrlEncode(Value);
自动登陆带有google-analytics 的网站                    
return;
自动登陆带有google-analytics 的网站                }

自动登陆带有google-analytics 的网站            }

自动登陆带有google-analytics 的网站 
自动登陆带有google-analytics 的网站            hash[Field] 
= System.Web.HttpUtility.UrlEncode ( Value);
自动登陆带有google-analytics 的网站        }

自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站
自动登陆带有google-analytics 的网站    }

自动登陆带有google-analytics 的网站}

自动登陆带有google-analytics 的网站

 

 

 

 

你可能感兴趣的:(analytics)