C# WPF 使用CefSharp 做爬虫,破除所有前端js加密限制

1.引言

现在随着python火热,学爬虫的人不计其数,防爬虫的手段层出不穷,但防爬虫无非通过3种手段,1.后台限制IP访问次数,这个可以通过使用代理IP破解,2.检测访问来源数据,判定是否是爬虫还是机器人,3.数据传输加密,不在明文传输数据,通过js加密,在加密js文件,或者直接把数据封装成图片等其他格式,不让用户获取到数据本身。
针对第2、3点,这里就实现通过在程序里面嵌入一个开源Chromium,去破解所有的js加密和访问来源限制,达到抓取数据的目的

2.CefSharp安装

详见https://blog.csdn.net/c0411034/article/details/82841696

3.爬取数据

爬取数据,主要是分析后台获取到网络包的内容,就像使用chrome浏览器F12键打开调试器,选择NETWORK一样,你可以从中截取到所有的网络包
截取数据,需要实现CefSharp.Handler.DefaultRequestHandler类,并复写操作方法。

public class RequestHandler_new : CefSharp.Handler.DefaultRequestHandler 
    {
    private Dictionary<UInt64, MemoryStreamResponseFilter> responseDictionary = new Dictionary<UInt64, MemoryStreamResponseFilter>();

    public IRequestHandler _requestHeandler;


    public RequestHandler_new(IRequestHandler rh) : base()
    {
        _requestHeandler = rh;
    }

    public override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
    {
        var url = new Uri(request.Url);
        var extension = url.ToString().ToLower();
        if (request.ResourceType == 
            ResourceType.Image || extension.EndsWith(".jpg") 
            || extension.EndsWith(".png") 
            || extension.EndsWith(".gif") 
            || extension.EndsWith(".jpeg")
            )
        {
			//这里是过滤掉不想要的数据,如图片资源,避免加载时间过长
            return CefReturnValue.Cancel;
        }

            if (Uri.TryCreate(request.Url, UriKind.Absolute, out url) == false
  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值