惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Recent Announcements
Recent Announcements
Vercel News
Vercel News
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Help Net Security
T
The Blog of Author Tim Ferriss
Y
Y Combinator Blog
G
Google Developers Blog
罗磊的独立博客
爱范儿
爱范儿
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
月光博客
月光博客
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 桦林

博客园发展的一些思路 [原] 自定义条件公式和计算公式的动态配置计算器的示例 [原] JsTree.js [原]常用sqlserver数据库使用sql语句 Net框架下-ORM框架LLBLGen的简介 [摘]各种开源协议 [原]JS方法按Json数据的某一字段排序 FOR XML AUTO将数据库表的一个字段的数据查询拼接为带间隔符的字符串 sql带分隔符的字符串截取 查询表字段、类型、是否主键的sql脚本 [转]Internet数据库连接器(IDC)技术 [摘]什么是CDN? [摘]网洛管理员应该具备哪些知识和技能 sql处理带分隔符的字符串数据 [摘]什么是SEM [摘]淘宝网的开源架构 Opera:发现浏览器安全漏洞后做什么 我的Silverlight初探 2008年末纪念:回顾改变Web的十大事记 Spry框架实现XML分页[原]
[原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果...
桦林 · 2011-05-31 · via 博客园 - 桦林

本代码只是业余时间无聊写着试试,用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只是进行简单的匹配,实际使用情况下需要进一步需要编写匹配方法,诸如正则验证等等
            }
        }

    }
}