[原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验

时间:2024-04-16 21:10:08

本代码只是业余时间无聊写着试试,用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验

 

这是网络中盛传的提高搜索引擎点击率的一种方式,当然属于作弊,不推荐各位使用。另外这种方式的性能不佳,往往因为网络及本地机器的原因中途当机。当然如果只是写这游戏一下那是无妨。这里只是提供了其中的一种原理,方法还有很多。如果此方式继续优化详细写下去的话可能需要涉及到vpn定时更改ip地址到问题,当然现在即便是vpn也有办法逆向找到原始的ip地址。

 

代码示例如下:

 

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Threading;

namespace WinApp_huashanlin
{
    
public partial class FormHits : Form
    {
        
public FormHits()
        {
            InitializeComponent();
            webBrowser_huashanlin.Navigate(
"http://www.baidu.com",false);
        }


        
private void button2_Click(object sender, EventArgs e)
        {
            
//设置要搜索的关键词
            string huashanlin_keys = "C#";

            
//选取百度搜索作为实验例子,将webBrowser导航到百度搜索主页
            webBrowser_huashanlin.Navigate("http://www.baidu.com"false);

            
//模拟人工查看或输入关键词等行为需要的3秒
            Thread.Sleep(3000);
            
            
//找到页面中输入关键字的input标签
            HtmlElement key0s = webBrowser_huashanlin.Document.All["kw"];

            
//为input标签输入value值
            key0s.SetAttribute("value", huashanlin_keys);
            
            
//找到页面中button或者submit按钮
            HtmlElement hit = webBrowser_huashanlin.Document.All["su"];

            
//触发搜索按钮的click事件
            hit.InvokeMember("click");

            
//模拟人查看搜索结果需要3秒时间
            Thread.Sleep(9000);

            
//设置需要在搜索结果中查找到的url地址
            string url = "http://baike.baidu.com/view/6590.htm";

            
//对需要查找的url进行编码
            string encodurl = System.Web.HttpUtility.UrlDecode(url, System.Text.Encoding.Unicode);


            
bool isget = false;

            
//匹配页面中所有标签为A超链接的href属性,如果匹配到则触发该超链接的click事件
            for (int i = 0; i < webBrowser_huashanlin.Document.All.Count; i++)
            {
                
if (webBrowser_huashanlin.Document.All[i].TagName.ToString().Trim() == "A")
                {
                    
string tmpeurl = webBrowser_huashanlin.Document.All[i].GetAttribute("href").ToString();
                    tmpeurl 
= System.Web.HttpUtility.UrlDecode(tmpeurl, System.Text.Encoding.Unicode);
                    
if (tmpeurl == encodurl)
                    {
                        isget 
= true;
                        
//webBrowserhuashanlin.Document.All[i].SetAttribute("target", "_self");//在同一个webBrowserhuashanlin浏览器组件中打开页面,便于后续操作。
                        webBrowser_huashanlin.Document.All[i].InvokeMember("click");//自动点击你所设置的页面
                        break;
                    }
                }
            }

            
if (!isget)
            {
                
//如果百度搜索结果的第一页中没有找到设置的url,则寻找到该页面中“下一页”的超链接并触发click事件,
                
//在下一个十条搜索结果中重复以上的步骤继续搜索匹配,这里可以把该代码整理整理成为一个递归函数循环的调用,直到找到目标位置。
                
//每个操作之间设置一个等待时间模拟人工等待的时间,同时也是为可能的网络状况留一个缓冲的余地
                
//以上对设置的url只是进行简单的匹配,实际使用情况下需要进一步需要编写匹配方法,诸如正则验证等等
            }
        }

    }
}
复制代码