tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

使用爬虫刷csdn博客访问量

12413人阅读 2018/12/3 17:15 总访问:1635402 评论:1 收藏:0 手机
分类: 爬虫


             

首先了解一下常见反爬虫的检测方法


频率监测:有些网站会设置一种频率监测的机制,对于同一IP,若在一定时间内访问的速度超过了设置的阈值,那么便会判定该IP的源头是一个爬虫机器人,从而限制访问频率或暂时禁止IP对其的访问


频数监测:与1有些类似,但是是对用户访问页面的数量进行统计,并在监测结果超过阈值后进行限制操作


Headers识别:这里常用的是对UA的识别和对Referer的判断。User-Agent是用户所使用的操作系统以及浏览器的标识。Referer表示请求是从哪个链接而来的。


为什么要说一下呢、、、因为可能我访问次数太频繁,我的ip被csdn封了......只能挂代理了


每一次访问都会更换user-agent,我查阅知乎,对于csdn这种大型网站,好像并没有什么用


正好试着用了一下ip池,代理ip需要自己选,百度就行,注意类型得是https的


但是发现即使更换ip,依旧是30+秒才能增加一次,这个问题没有解决,我猜测或许是访问量突破某一个门限值才能解除此限制??不懂,希望大佬指点(已解决)


最后,通过这种方法刷访问量,感觉挺无耻的、、、有正义感的大佬勿喷


(3.6更新)我之前使用代理的代码是错误的。。。惭愧,更改之后的代码可以使用不同的ip,大大提高刷的效率,当然由于西刺可以使用的ip很少,如果可以买大量代理ip,那么一天刷取的浏览量还是很客观的

import urllib2 
import random
import time
import requests
 
proxy_list=[]
 
def get_proxy_list():
    global proxy_list
    print "导入proxy_list...".decode('utf-8')
    #ip文件可以浏览我上文链接文章“多线程爬虫——抓取代理ip”
    f=open("ip.txt")
    #从文件中读取的line会有回车,要把\n去掉
    line=f.readline().strip('\n')
    while line:
        proxy_list.append(line)
        line=f.readline().strip('\n')
    f.close()
 
def start():
    #总次数和有效次数
    times=0
    finished_times=0
    #无限刷
    while 1:
        user_agent_list=[
            {'Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0)'},
            {'Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)'},
            {'Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.0)'},
            {'Opera/9.80(WindowsNT6.1;U;en)Presto/2.8.131Version/11.11'},
            {'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1'},
            {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'},
            {'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)'},
            {'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0'},
            {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36'},  
            {'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36'} 
        ]
 
        referer_list=[
            {'http://blog.csdn.net/dala_da/article/details/79401163'},
            {'http://blog.csdn.net/'},
            {'https://www.sogou.com/tx?query=%E4%BD%BF%E7%94%A8%E7%88%AC%E8%99%AB%E5%88%B7csdn%E8%AE%BF%E9%97%AE%E9%87%8F&hdq=sogou-site-706608cfdbcc1886-0001&ekv=2&ie=utf8&cid=qb7.zhuye&'},
            {'https://www.baidu.com/s?tn=98074231_1_hao_pg&word=%E4%BD%BF%E7%94%A8%E7%88%AC%E8%99%AB%E5%88%B7csdn%E8%AE%BF%E9%97%AE%E9%87%8F'}
        ]
        #想要刷的blog的url
        url='http://blog.csdn.net/dala_da/article/details/79401163'
        #随机user_agent和Referer
        header={'User-Agent':random.choice(user_agent_list), 
                'Referer':random.choice(referer_list)
        }
        #依次从proxy_list中取
        ip=proxy_list[times%len(proxy_list)]
        #设置代理,格式如下
        proxy_ip = 'http://' + ip
        proxy_ips = 'https://' + ip
        proxy = {'https': proxy_ips, 'http': proxy_ip}
    
        try:
            response=requests.get(url, headers=header, proxies=proxy)
        except:
            #无响应则print出该代理ip
            print '代理出问题啦:'.decode('utf-8')+proxy["https"]
            time.sleep(0.1)
        else:
            print ('已刷%d次,%s')%(finished_times+1,proxy["https"])
            time.sleep(random.random())
            finished_times+=1
 
        times+=1
        #每当所有的代理ip刷过一轮,延时15秒
        if not times%len(proxy_list):
            time.sleep(15)
 
if __name__=="__main__":
    get_proxy_list()
    start()



原文:https://blog.csdn.net/dala_da/article/details/79401163 



欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价