博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决爬虫伪装之伪装User-Agent和代理IP
阅读量:4095 次
发布时间:2019-05-25

本文共 2906 字,大约阅读时间需要 9 分钟。

随机User-Agent scrapy

fake_useragent库,伪装请求头

from fake_useragent import UserAgent ua = UserAgent()# ie浏览器的user agentprint(ua.ie) # opera浏览器print(ua.opera) # chrome浏览器print(ua.chrome) # firefox浏览器print(ua.firefox) # safri浏览器print(ua.safari) # 最常用的方式# 写爬虫最实用的是可以随意变换headers,一定要有随机性。支持随机生成请求头print(ua.random)print(ua.random)print(ua.random)

获取发出请求的ip地址

def get_local_ip():    # headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"}    ua = UserAgent()    head = ua.random    headers = {
"User-Agent": head} url = 'http://ip.hahado.cn/ip' # 使用的是阿布云收费代理ip proxy = {
'http': 'http://HC9XY1E5IT9P:884F63FA3A@http-pro.abuyun.com:9010'} respone = requests.get(url=url, headers=headers, proxies=proxy) print(respone.text)
from fake_useragent import UserAgentclass RandomUserAgentMiddlware(object):    #随机更换user-agent    def __init__(self, crawler):        super(RandomUserAgentMiddlware, self).__init__()        self.ua = UserAgent()        self.ua_type = crawler.settings.get("RANDOM_UA_TYPE", "random")    @classmethod    def from_crawler(cls, crawler):        return cls(crawler)    def process_request(self, request, spider):        def get_ua():            return getattr(self.ua, self.ua_type)        request.headers.setdefault('User-Agent', get_ua())

代理ip

先把有效的免费的代理ip保持到一个文件里

class GetIP(object):    def delete_ip(self):        dd = pd.read_csv('xici_ip.csv', header=None)        print(dd[0])    def judge_ip(self, ip, port, http):        #判断ip是否可用        headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"} http_url = "http://www.baidu.com" proxy_url = "{0}:{1}".format(ip, port) try: if http == 'HTTP': proxy_dict = {
"http": 'http://' + proxy_url, } else: proxy_dict = {
"https": 'https://' + proxy_url, } response = requests.get(http_url, proxies=proxy_dict, timeout=5, headers=headers) print(response) except Exception as e: print('无效') return False else: code = response.status_code if code >= 200 and code < 300: print('有效') return True else: print('wuxiao') return False def get_random_ip(self): dd = pd.read_csv('xici_ip3.csv', header=None) first_ip = dd.sample(n=1, random_state=None) ip = first_ip.iloc[0,1] port = first_ip.iloc[0, 2] http = first_ip.iloc[0, 3] judge_re = self.judge_ip(ip, port, http) if judge_re: if http == 'HTTP': return "http://{0}:{1}".format(ip, port) else: return "https://{0}:{1}".format(ip, port) else: return self.get_random_ip()

转载地址:http://cmvii.baihongyu.com/

你可能感兴趣的文章
推荐几个私藏很久的技术公众号给大家
查看>>
20 个 2020 年软件开发趋势预测
查看>>
王垠受邀面试阿里 P9,被 P10 面跪后网上怒发文,惨打 325 的 P10 赵海平回应了!...
查看>>
Python 趣味打怪:147 段简单代码助你从入门到大师
查看>>
卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
查看>>
厉害了!Python 编辑器界的神器 Jupyter ,推出官方可视化 Debug 工具!
查看>>
卧槽!Java 虚拟机竟然还有这些性能调优技巧...
查看>>
听说玩这些游戏能提升编程能力?
查看>>
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
上古语言从入门到精通:COBOL 教程登上 GitHub 热榜
查看>>
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
神器面世:让你快速在 iOS 设备上安装 Windows、Linux 等操作系统!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
太赞了!GitHub 标星 2.4k+,《可解释机器学习》中文版正式开放!
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>