├── .gitignore ├── README.md ├── requirements.txt └── spider ├── image ├── fund.png └── manager.png ├── m.csv ├── scrapy.cfg ├── spider ├── __init__.py ├── items.py ├── middlewares.py ├── pipelines.py ├── settings.py ├── spiders │ ├── AmacItemExporter.py │ ├── __init__.py │ └── amac.py └── util │ ├── UserAgentUtil.py │ └── __init__.py └── useragent.txt /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | __pycache__/ 3 | venv/ 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Scrapy-Amac 2 | 3 | ![python](https://img.shields.io/badge/Python-3.8.2-green) 4 | ![Scrapy](https://img.shields.io/badge/Scrapy-1.6.0-yellow) 5 | 6 | ## Overview 7 | 为方便广大投资者对私募基金信息进行查询,中国基金业协会在官方网站搭建了私募基金分类公示平台,按照私募基金管理人登记的信息对私募基金进行分类公示。 8 | 为了全面了解相关机构或者产品信息,学习使用 Scrapy 框架获取部分信息。 9 | + **[Scrapy](https://github.com/scrapy/scrapy)** 是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 10 | Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 11 | 12 | + **[中基协](http://gs.amac.org.cn/)** 中国证券投资基金业协会成立于2012年6月6日,是基金行业相关机构自愿结成的全国性、行业性、非营利性社会组织。 13 | 会员包括基金管理公司、基金托管银行、基金销售机构、基金评级机构及其他资产管理机构、相关服务机构。 14 | 15 | ## Requirements 16 | + Python 3.5 + 17 | + Works on Linux, Windows, macOS, BSD 18 | 19 | 20 | ## Install 21 | ``` 22 | pip install requirements.txt 23 | ``` 24 | 安装过程中如果提示缺少 Twisted, Pywin32 等库,可以在 **[https://www.lfd.uci.edu/](https://www.lfd.uci.edu/~gohlke/pythonlibs/)** 中根据自己 Python 版本下载。 25 | 26 | ## Run 27 | + 如果需要获取私募基金管理人 28 | 29 | ![私募基金管理人](https://github.com/bingo-zh/scrapy-amac/blob/master/spider/image/manager.png) 30 | 31 | 更改 SPIDER_TYPE = 0 32 | ``` 33 | SPIDER_TYPE = 0 34 | ``` 35 | 在 包含scrapy.cfg 的目录中运行如下命令 36 | ``` 37 | scrapy crawl manager -o manager.csv 38 | ``` 39 | 40 | + 如果需要获取私募基金 41 | 42 | ![私募基金](https://github.com/bingo-zh/scrapy-amac/blob/master/spider/image/fund.png) 43 | 44 | 更改 SPIDER_TYPE = 1 45 | ``` 46 | SPIDER_TYPE = 1 47 | ``` 48 | 在 包含scrapy.cfg 的目录中运行如下命令 49 | ``` 50 | scrapy crawl fund -o fund.csv 51 | ``` 52 | 53 | ## Documentation 54 | + Scrapy 相关文档可参见 **[https://devguide.python.org/](https://devguide.python.org/)** 55 | + Python 相关文档可参见 **[https://docs.scrapy.org/](https://docs.scrapy.org/)** 56 | ## Releases 57 | 仅供学习使用 58 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | attrs==19.3.0 2 | Automat==20.2.0 3 | cffi==1.14.0 4 | constantly==15.1.0 5 | cryptography==2.9 6 | cssselect==1.1.0 7 | fake-useragent==0.1.11 8 | hyperlink==19.0.0 9 | idna==2.9 10 | incremental==17.5.0 11 | lxml==4.5.0 12 | parsel==1.5.2 13 | Protego==0.1.16 14 | pyasn1==0.4.8 15 | pyasn1-modules==0.2.8 16 | pycparser==2.20 17 | PyDispatcher==2.0.5 18 | PyHamcrest==2.0.2 19 | pyOpenSSL==19.1.0 20 | queuelib==1.5.0 21 | Scrapy==2.0.1 22 | service-identity==18.1.0 23 | six==1.14.0 24 | Twisted==20.3.0 25 | w3lib==1.21.0 26 | zope.interface==5.1.0 27 | -------------------------------------------------------------------------------- /spider/image/fund.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bingo-zh/scrapy-amac/3c0ba94121373b644a6fc357b25366f14ecc4427/spider/image/fund.png -------------------------------------------------------------------------------- /spider/image/manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bingo-zh/scrapy-amac/3c0ba94121373b644a6fc357b25366f14ecc4427/spider/image/manager.png -------------------------------------------------------------------------------- /spider/scrapy.cfg: -------------------------------------------------------------------------------- 1 | # Automatically created by: scrapy startproject 2 | # 3 | # For more information about the [deploy] section see: 4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html 5 | 6 | [settings] 7 | default = spider.settings 8 | 9 | [deploy] 10 | url = http://localhost:6800/ 11 | project = spider 12 | -------------------------------------------------------------------------------- /spider/spider/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bingo-zh/scrapy-amac/3c0ba94121373b644a6fc357b25366f14ecc4427/spider/spider/__init__.py -------------------------------------------------------------------------------- /spider/spider/items.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Define here the models for your scraped items 4 | # 5 | # See documentation in: 6 | # https://doc.scrapy.org/en/latest/topics/items.html 7 | 8 | import scrapy 9 | 10 | 11 | class FundItem(scrapy.Item): 12 | BEIAN = scrapy.Field() 13 | BEIAN_JD = scrapy.Field() 14 | BIZHONG = scrapy.Field() 15 | CHENGLI = scrapy.Field() 16 | FUNDID = scrapy.Field() 17 | FUNDMANAGE = scrapy.Field() 18 | FUNDNAME = scrapy.Field() 19 | FUNDTYPE = scrapy.Field() 20 | HALFY_R = scrapy.Field() 21 | ID = scrapy.Field() 22 | LASTUPDATETIME = scrapy.Field() 23 | MANAGETYPE = scrapy.Field() 24 | MONTH_R = scrapy.Field() 25 | PARENTID = scrapy.Field() 26 | QUARTER_R = scrapy.Field() 27 | REMARK = scrapy.Field() 28 | STATUS = scrapy.Field() 29 | TUOGUANMANAGE = scrapy.Field() 30 | YEAR_R = scrapy.Field() 31 | 32 | 33 | class ManagerItem(scrapy.Item): 34 | ID = scrapy.Field() 35 | MANAGERNAME = scrapy.Field() 36 | ARTIFICIALPERSONNAME = scrapy.Field() 37 | REGISTERNO = scrapy.Field() 38 | ESTABLISHDATE = scrapy.Field() 39 | MANAGERHASPRODUCT = scrapy.Field() 40 | URL = scrapy.Field() 41 | REGISTERDATE = scrapy.Field() 42 | REGISTERADDRESS = scrapy.Field() 43 | REGISTERPROVINCE = scrapy.Field() 44 | REGISTERCITY = scrapy.Field() 45 | REGADRAGG = scrapy.Field() 46 | FUNDCOUNT = scrapy.Field() 47 | FUNDSCALE = scrapy.Field() 48 | PAIDINCAPITAL = scrapy.Field() 49 | SUBSCRIBEDCAPITAL = scrapy.Field() 50 | HASSPECIALTIPS = scrapy.Field() 51 | INBLACKLIST = scrapy.Field() 52 | HASCREDITTIPS = scrapy.Field() 53 | REGCOORDINATE = scrapy.Field() 54 | OFFICECOORDINATE = scrapy.Field() 55 | OFFICEADDRESS = scrapy.Field() 56 | OFFICEPROVINCE = scrapy.Field() 57 | OFFICECITY = scrapy.Field() 58 | PRIMARYINVESTTYPE = scrapy.Field() 59 | EN_MANAGERNAME = scrapy.Field() 60 | ORG_CODE = scrapy.Field() 61 | ORG_TYPE = scrapy.Field() 62 | CREDITTIPS = scrapy.Field() 63 | REGISTERPAY = scrapy.Field() 64 | TUREPAY = scrapy.Field() 65 | PAYRATE = scrapy.Field() 66 | BUSINESSTYPE = scrapy.Field() 67 | STAFF = scrapy.Field() 68 | ISVIP = scrapy.Field() 69 | VIPTYPE = scrapy.Field() 70 | VIPTIME = scrapy.Field() 71 | LAWSTATUS = scrapy.Field() 72 | ISTOWORK = scrapy.Field() 73 | WORKWAY = scrapy.Field() 74 | LAWORG = scrapy.Field() 75 | LAWPER = scrapy.Field() 76 | 77 | -------------------------------------------------------------------------------- /spider/spider/middlewares.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Define here the models for your spider middleware 4 | # 5 | # See documentation in: 6 | # https://doc.scrapy.org/en/latest/topics/spider-middleware.html 7 | 8 | import random 9 | import sys 10 | 11 | from scrapy import signals 12 | from scrapy.downloadermiddlewares.retry import RetryMiddleware 13 | from scrapy.utils.project import get_project_settings 14 | 15 | from .util.UserAgentUtil import UserAgentUtil 16 | 17 | sys.setrecursionlimit(5000) 18 | 19 | 20 | class UADownloaderMiddleware(object): 21 | ua_list = [] 22 | 23 | def __init__(self): 24 | try: 25 | self.ua_list = UserAgentUtil().getUA()['useragent'] 26 | except Exception as e: 27 | print(e) 28 | 29 | def process_request(self, request, spider): 30 | request.headers['User-Agent'] = random.choice(self.ua_list) 31 | 32 | 33 | class SpiderSpiderMiddleware(object): 34 | # Not all methods need to be defined. If a method is not defined, 35 | # scrapy acts as if the spider middleware does not modify the 36 | # passed objects. 37 | 38 | @classmethod 39 | def from_crawler(cls, crawler): 40 | # This method is used by Scrapy to create your spiders. 41 | s = cls() 42 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) 43 | return s 44 | 45 | def process_spider_input(self, response, spider): 46 | # Called for each response that goes through the spider 47 | # middleware and into the spider. 48 | 49 | # Should return None or raise an exception. 50 | return None 51 | 52 | def process_spider_output(self, response, result, spider): 53 | # Called with the results returned from the Spider, after 54 | # it has processed the response. 55 | 56 | # Must return an iterable of Request, dict or Item objects. 57 | for i in result: 58 | yield i 59 | 60 | def process_spider_exception(self, response, exception, spider): 61 | # Called when a spider or process_spider_input() method 62 | # (from other spider middleware) raises an exception. 63 | 64 | # Should return either None or an iterable of Response, dict 65 | # or Item objects. 66 | pass 67 | 68 | def process_start_requests(self, start_requests, spider): 69 | # Called with the start requests of the spider, and works 70 | # similarly to the process_spider_output() method, except 71 | # that it doesn’t have a response associated. 72 | 73 | # Must return only requests (not items). 74 | for r in start_requests: 75 | yield r 76 | 77 | def spider_opened(self, spider): 78 | spider.logger.info('Spider opened: %s' % spider.name) 79 | 80 | 81 | class SpiderDownloaderMiddleware(object): 82 | # Not all methods need to be defined. If a method is not defined, 83 | # scrapy acts as if the downloader middleware does not modify the 84 | # passed objects. 85 | settings = get_project_settings() 86 | is_random_ua = settings.get('IS_RANDOM_UA') 87 | ua_list = [] 88 | 89 | def __init__(self): 90 | try: 91 | self.ua_list = UserAgentUtil().getUA()['useragent'] 92 | except Exception as e: 93 | print(e) 94 | 95 | 96 | @classmethod 97 | def from_crawler(cls, crawler): 98 | # This method is used by Scrapy to create your spiders. 99 | s = cls() 100 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened) 101 | return s 102 | 103 | def process_request(self, request, spider): 104 | # Called for each request that goes through the downloader 105 | # middleware. 106 | 107 | # Must either: 108 | # - return None: continue processing this request 109 | # - or return a Response object 110 | # - or return a Request object 111 | # - or raise IgnoreRequest: process_exception() methods of 112 | # installed downloader middleware will be called 113 | if self.is_random_ua == 1: 114 | u = random.choice(self.ua_list) 115 | else: 116 | u = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' \ 117 | ' (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' 118 | request.headers['User-Agent'] = u 119 | 120 | def process_response(self, request, response, spider): 121 | # Called with the response returned from the downloader. 122 | 123 | # Must either; 124 | # - return a Response object 125 | # - return a Request object 126 | # - or raise IgnoreRequest 127 | return response 128 | 129 | def process_exception(self, request, exception, spider): 130 | # Called when a download handler or a process_request() 131 | # (from other downloader middleware) raises an exception. 132 | 133 | # Must either: 134 | # - return None: continue processing this exception 135 | # - return a Response object: stops process_exception() chain 136 | # - return a Request object: stops process_exception() chain 137 | pass 138 | 139 | def spider_opened(self, spider): 140 | spider.logger.info('Spider opened: %s' % spider.name) 141 | 142 | 143 | class RetryRecordMiddleware(RetryMiddleware): 144 | 145 | def __init__(self, settings): 146 | RetryMiddleware.__init__(self, settings) 147 | 148 | def process_exception(self, request, exception, spider): 149 | to_return = RetryMiddleware.process_exception( 150 | self, request, exception, spider) 151 | # customize retry middleware by modifying this 152 | request.meta['url'] = request.url 153 | self.record_failed('failed.txt', request, exception, 'url') 154 | return to_return 155 | 156 | def record_failed(self, path, request, exception, failed_meta): 157 | failed_list = request.meta.get(failed_meta, []) 158 | failed_list = [x.strip() for x in failed_list] 159 | of = open(path, 'a') 160 | of.write('%s\n' % ''.join(failed_list)) 161 | of.close() 162 | -------------------------------------------------------------------------------- /spider/spider/pipelines.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Define your item pipelines here 4 | # 5 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting 6 | # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html 7 | 8 | class SpiderPipeline(object): 9 | def process_item(self, item, spider): 10 | return item 11 | -------------------------------------------------------------------------------- /spider/spider/settings.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | BOT_NAME = 'spider' 4 | 5 | SPIDER_MODULES = ['spider.spiders'] 6 | NEWSPIDER_MODULE = 'spider.spiders' 7 | IS_RANDOM_UA = 1 # 随机User-Agent 8 | SPIDER_TYPE = 0 # 0:管理人(manager),1:产品(fund) 9 | 10 | ROBOTSTXT_OBEY = True 11 | 12 | # Configure maximum concurrent requests performed by Scrapy (default: 16) 13 | #CONCURRENT_REQUESTS = 32 14 | 15 | # Configure a delay for requests for the same website (default: 0) 16 | #DOWNLOAD_DELAY = 3 17 | 18 | # The download delay setting will honor only one of: 19 | #CONCURRENT_REQUESTS_PER_DOMAIN = 16 20 | #CONCURRENT_REQUESTS_PER_IP = 16 21 | 22 | # Disable cookies (enabled by default) 23 | #COOKIES_ENABLED = False 24 | 25 | # Disable Telnet Console (enabled by default) 26 | #TELNETCONSOLE_ENABLED = False 27 | 28 | # Override the default request headers: 29 | #DEFAULT_REQUEST_HEADERS = { 30 | # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 31 | # 'Accept-Language': 'en', 32 | #} 33 | 34 | # Enable or disable spider middlewares 35 | # See https://doc.scrapy.org/en/latest/topics/spider-middleware.html 36 | SPIDER_MIDDLEWARES = { 37 | # 'spider.middlewares.SpiderSpiderMiddleware': 543, 38 | } 39 | 40 | # Enable or disable downloader middlewares 41 | # See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html 42 | DOWNLOADER_MIDDLEWARES = { 43 | 'spider.middlewares.UADownloaderMiddleware': 541, 44 | 'spider.middlewares.SpiderDownloaderMiddleware': 542, 45 | 'spider.middlewares.RetryRecordMiddleware': 543, 46 | 47 | } 48 | 49 | # Enable or disable extensions 50 | # See https://doc.scrapy.org/en/latest/topics/extensions.html 51 | #EXTENSIONS = { 52 | # 'scrapy.extensions.telnet.TelnetConsole': None, 53 | #} 54 | 55 | # Configure item pipelines 56 | # See https://doc.scrapy.org/en/latest/topics/item-pipeline.html 57 | # ITEM_PIPELINES = { 58 | # 'spider.pipelines.SpiderPipeline': 300, 59 | # # 'spider.pipelines.OraclePipline': 544, 60 | # } 61 | 62 | # Enable and configure the AutoThrottle extension (disabled by default) 63 | # See https://doc.scrapy.org/en/latest/topics/autothrottle.html 64 | #AUTOTHROTTLE_ENABLED = True 65 | # The initial download delay 66 | #AUTOTHROTTLE_START_DELAY = 5 67 | # The maximum download delay to be set in case of high latencies 68 | #AUTOTHROTTLE_MAX_DELAY = 60 69 | # The average number of requests Scrapy should be sending in parallel to 70 | # each remote server 71 | #AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 72 | # Enable showing throttling stats for every response received: 73 | #AUTOTHROTTLE_DEBUG = False 74 | 75 | # Enable and configure HTTP caching (disabled by default) 76 | # See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings 77 | #HTTPCACHE_ENABLED = True 78 | #HTTPCACHE_EXPIRATION_SECS = 0 79 | #HTTPCACHE_DIR = 'httpcache' 80 | #HTTPCACHE_IGNORE_HTTP_CODES = [] 81 | #HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage' 82 | FEED_EXPORT_ENCODING = "utf-8-sig" 83 | # FEED_EXPORTERS = { 84 | # 'csv': 'spider.spiders.AmacItemExporter.AmacItemExporter', 85 | # } 86 | # FIELDS_TO_EXPORT = [ 87 | # 'ID', # 编号 88 | # 'FUNDNAME', # 基金名称 89 | # 'FUNDID', # 基金编号 90 | # 'CHENGLI', # 成立时间 91 | # 'BEIAN', # 备案时间 92 | # 'BEIAN_JD', # 备案阶段 93 | # 'FUNDTYPE', # 基金类型 94 | # 'BIZHONG', # 币种 95 | # 'FUNDMANAGE', # 基金管理人名称 96 | # 'MANAGETYPE', # 管理类型 97 | # 'TUOGUANMANAGE', # 托管人名称 98 | # 'STATUS', # 运作状态 99 | # 'LASTUPDATETIME', # 最后更新时间 100 | # 'REMARK', # 特别提醒 101 | # 'MONTH_R', # 月报 102 | # 'HALFY_R', # 半年报 103 | # 'YEAR_R', # 年报 104 | # 'QUARTER_R', # 季报 105 | # 'PARENTID' 106 | # ] 107 | # 108 | FIELDS_TO_EXPORT = [ 109 | 'ID',#客户主键 110 | 'MANAGERNAME',#基金管理人全称(中文) 111 | 'ARTIFICIALPERSONNAME',#法定代表人/执行事务合伙人(委派代表)姓名 112 | 'REGISTERNO',#登记编号 113 | 'ESTABLISHDATE',#成立时间 114 | 'MANAGERHASPRODUCT',# 115 | 'URL',# 116 | 'REGISTERDATE',#登记时间 117 | 'REGISTERADDRESS',#注册地址 118 | 'REGISTERPROVINCE',#注册省份 119 | 'REGISTERCITY',#注册城市 120 | 'REGADRAGG',#注册地区 121 | 'FUNDCOUNT',#基金数量 122 | 'FUNDSCALE',#基金规模 123 | 'PAIDINCAPITAL',# 124 | 'SUBSCRIBEDCAPITAL',# 125 | 'HASSPECIALTIPS',#特别提示 126 | 'INBLACKLIST',#黑名单 127 | 'HASCREDITTIPS',#机构诚信信息 128 | 'REGCOORDINATE',#注册坐标 129 | 'OFFICECOORDINATE',#办公坐标 130 | 'OFFICEADDRESS',#办公地址 131 | 'OFFICEPROVINCE',#办公省份 132 | 'OFFICECITY',#办公城市 133 | 'PRIMARYINVESTTYPE',#机构类型 134 | 'EN_MANAGERNAME',#基金管理人全称(英文) 135 | 'ORG_CODE',#组织机构代码 136 | 'ORG_TYPE',#企业性质 137 | 'CREDITTIPS',#机构诚信信息 138 | 'REGISTERPAY',#注册资本(万元)(人民币) 139 | 'TUREPAY',#实缴资本(万元)(人民币) 140 | 'PAYRATE',#注册资本实缴比例 141 | 'BUSINESSTYPE',#注册资本实缴比例 142 | 'STAFF',#员工人数 143 | 'ISVIP',#是否为会员 144 | 'VIPTYPE',#当前会员类型 145 | 'VIPTIME',#入会时间 146 | 'LAWSTATUS',#法律意见书状态 147 | 'ISTOWORK',#是否有从业资格 148 | 'WORKWAY',#资格取得方式 149 | 'LAWORG',#律师事务所名称 150 | 'LAWPER',#律师姓名 151 | ] 152 | -------------------------------------------------------------------------------- /spider/spider/spiders/AmacItemExporter.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | """ 4 | @version: 0.1 5 | @author: zhangwb 6 | 导出字段排序 7 | """ 8 | from scrapy import settings 9 | from scrapy.exporters import CsvItemExporter 10 | 11 | 12 | class AmacItemExporter(CsvItemExporter): 13 | 14 | def __init__(self, *args, **kwargs): 15 | delimiter = settings.get('CSV_DELIMITER', ',') 16 | kwargs['delimiter'] = delimiter 17 | 18 | fields_to_export = settings.get('FIELDS_TO_EXPORT', []) 19 | if fields_to_export: 20 | kwargs['fields_to_export'] = fields_to_export 21 | 22 | super(AmacItemExporter, self).__init__(*args, **kwargs) 23 | -------------------------------------------------------------------------------- /spider/spider/spiders/__init__.py: -------------------------------------------------------------------------------- 1 | # This package will contain the spiders of your Scrapy project 2 | # 3 | # Please refer to the documentation for information on how to create and manage 4 | # your spiders. 5 | -------------------------------------------------------------------------------- /spider/spider/spiders/amac.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @version: 0.1 4 | @author: zhangwb 5 | 中基协私募基金管理人及产品信息爬取 6 | """ 7 | import scrapy 8 | import random 9 | import json 10 | from spider.items import ManagerItem 11 | from spider.items import FundItem 12 | from scrapy.utils.project import get_project_settings 13 | 14 | 15 | class AmacSpider(scrapy.Spider): 16 | 17 | settings = get_project_settings() 18 | spidertype = settings.get('SPIDER_TYPE') 19 | if spidertype == 0: 20 | name = 'manager' 21 | elif spidertype == 1: 22 | name = 'fund' 23 | allowed_domains = ['gs.amac.org.cn'] 24 | headers = { 25 | 'Accept': 'application/json, text/javascript, */*; q=0.01', 26 | 'Accept-Language': 'zh-CN,zh;q=0.9', 27 | 'Content-Type': 'application/json', 28 | 'Host': 'gs.amac.org.cn', 29 | 'Origin': 'http://gs.amac.org.cn', 30 | 'Referer': 'http://gs.amac.org.cn/amac-infodisc/res/pof/{}/index.html'.format(name), 31 | 'X-Requested-With': 'XMLHttpRequest', 32 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)' 33 | ' Chrome/68.0.3440.106 Safari/537.36' 34 | } 35 | r = str(random.uniform(0, 1)) 36 | page = str(0) 37 | size = str(100) 38 | post_url_prefix = 'http://gs.amac.org.cn/amac-infodisc/api/pof/{}?rand={}&size={}'.format(name, r, size) 39 | post_url = post_url_prefix + '&page={}'.format(page) 40 | 41 | # 发起请求 42 | def start_requests(self): 43 | yield scrapy.Request(url=self.post_url, 44 | method='POST', 45 | headers=self.headers, 46 | callback=self.parse_list, 47 | body="{}") 48 | 49 | # 解析列表 50 | def parse_list(self, response): 51 | contents = json.loads(response.body_as_unicode()) # 返回内容json 52 | content = contents.get('content') 53 | info_url_prefix = 'http://gs.amac.org.cn/amac-infodisc/res/pof/{}/'.format(self.name) 54 | # 循环获取info信息 55 | for i in range(0, len(content)): 56 | info_url = content[i].get('url') 57 | yield scrapy.Request(url=info_url_prefix + info_url, headers=self.headers, callback=self.parse_info, 58 | meta={'list_content': content[i]}) 59 | totalpages = contents.get('totalPages') # 总共多少页 60 | for i in range(1, totalpages): 61 | self.page = str(i) 62 | self.post_url = (self.post_url_prefix + '&page={}').format(self.page) 63 | yield scrapy.Request(url=self.post_url, 64 | method='POST', 65 | headers=self.headers, 66 | callback=self.parse_list, 67 | body="{}") 68 | 69 | def parse_info(self, response): 70 | if self.spidertype == 0: 71 | yield self.parse_manager(response) 72 | elif self.spidertype == 1: 73 | yield self.parse_fund(response) 74 | 75 | def parse_manager(self, response): 76 | list_content = response.meta['list_content'] 77 | u = response.url 78 | tbody = response.xpath("//div[@class='info-body']") 79 | for t in tbody: 80 | item = ManagerItem() 81 | item['ID'] = list_content.get('id')# 客户主键 82 | 83 | # 机构诚信信息 84 | item['CREDITTIPS'] = t.xpath('normalize-space(./div[@class="rule"]//td[contains(text(),"机构诚信信息")]/following-sibling::td)').extract_first() 85 | item['MANAGERNAME'] = list_content.get('managerName') # 基金管理人全称(中文) 86 | item['ARTIFICIALPERSONNAME'] = list_content.get('artificialPersonName')# 法定代表人/执行事务合伙人(委派代表)姓名 87 | item['REGISTERNO'] = list_content.get('registerNo') # 登记编号 88 | item['ESTABLISHDATE'] = list_content.get('establishDate')# 成立时间 89 | item['MANAGERHASPRODUCT'] = list_content.get('managerHasProduct')# 90 | item['URL'] = u# 91 | item['REGISTERDATE'] = list_content.get('registerDate') # 登记时间 92 | item['REGISTERADDRESS'] = list_content.get('registerAddress') # 注册地址 93 | item['REGISTERPROVINCE'] = list_content.get('registerProvince') # 注册省份 94 | item['REGISTERCITY'] = list_content.get('registerCity') # 注册城市 95 | item['REGADRAGG'] = list_content.get('regAdrAgg') # 注册地区 96 | item['FUNDCOUNT'] = list_content.get('fundCount') # 基金数量 97 | item['FUNDSCALE'] = list_content.get('fundScale')# 基金规模 98 | item['PAIDINCAPITAL'] = list_content.get('paidInCapital')# 99 | item['SUBSCRIBEDCAPITAL'] = list_content.get('subscribedCapital') # 100 | item['HASSPECIALTIPS'] = list_content.get('hasSpecialTips') # 特别提示 101 | item['INBLACKLIST'] = list_content.get('inBlacklist') # 黑名单 102 | item['HASCREDITTIPS'] = list_content.get('hasCreditTips') # 机构诚信信息 103 | item['REGCOORDINATE'] = list_content.get('regCoordinate') # 注册坐标 104 | item['OFFICECOORDINATE'] = list_content.get('officeCoordinate') # 办公坐标 105 | item['OFFICEADDRESS'] = list_content.get('officeAddress') # 办公地址 106 | item['OFFICEPROVINCE'] = list_content.get('officeProvince')# 办公省份 107 | item['OFFICECITY'] = list_content.get('officeCity')# 办公城市 108 | item['PRIMARYINVESTTYPE'] = list_content.get('primaryInvestType') # 机构类型 109 | 110 | 111 | itemmap = { 112 | 'EN_MANAGERNAME': '基金管理人全称(英文)', # 基金管理人全称(英文) 113 | 'ORG_CODE': '组织机构代码', # 组织机构代码 114 | 'ORG_TYPE': '企业性质', # 企业性质 115 | 'REGISTERPAY': '注册资本(万元)(人民币)', # 注册资本(万元)(人民币) 116 | 'TUREPAY': '实缴资本(万元)(人民币)', # 实缴资本(万元)(人民币) 117 | 'PAYRATE': '注册资本实缴比例', # 注册资本实缴比例 118 | 'BUSINESSTYPE': '业务类型', # 业务类型 119 | 'STAFF': '员工人数', # 员工人数 120 | 'ISVIP': '是否为会员', # 是否为会员 121 | 'VIPTYPE': '当前会员类型', # 当前会员类型 122 | 'VIPTIME': '入会时间', # 入会时间 123 | 'LAWSTATUS': '法律意见书状态', # 法律意见书状态 124 | 'ISTOWORK': '是否有基金从业资格', # 是否有从业资格 125 | 'WORKWAY': '资格取得方式', # 资格取得方式 126 | 'LAWORG': '律师事务所名称', # 律师事务所名称 127 | 'LAWPER': '律师姓名', # 律师姓名id 128 | 129 | } 130 | 131 | for v in itemmap: 132 | key = v 133 | value = itemmap[key] 134 | item[key] = t.xpath('normalize-space(.//td[contains(text(),"{}")]/following-sibling::td[1]/text())'.format(value)).extract_first() 135 | return item 136 | 137 | def parse_fund(self, response): 138 | item = FundItem() 139 | tbody = response.xpath("//div[@class='info-body']") 140 | no = response.url 141 | id_s = self.find_last(no, '/') + 1 142 | id_e = self.find_last(no, '.') 143 | no = no[id_s: id_e] 144 | item['ID'] = no 145 | 146 | itemmap = { 147 | 'FUNDNAME': '基金名称', 148 | 'FUNDID': '基金编号', 149 | 'CHENGLI': '成立时间', 150 | 'BEIAN': '备案时间', 151 | 'BEIAN_JD': '基金备案阶段', 152 | 'FUNDTYPE': '基金类型', 153 | 'BIZHONG': '币种', 154 | 'FUNDMANAGE': '基金管理人名称', 155 | 'MANAGETYPE': '管理类型', 156 | 'TUOGUANMANAGE': '托管人名称', 157 | 'STATUS': '运作状态', 158 | 'LASTUPDATETIME': '基金信息最后更新时间', 159 | 'REMARK': '特别提示', 160 | 'HALFY_R': '半年报', 161 | 'YEAR_R': '年报', 162 | 'QUARTER_R': '季报', 163 | 'MONTH_R': '当月月报', 164 | } 165 | 166 | for v in itemmap: 167 | key = v 168 | value = itemmap[key] 169 | vv = '' 170 | if key == 'FUNDNAME': 171 | 172 | vv = tbody.xpath('normalize-space(.//td[contains(text(),"{}")]/following-sibling::td[1]/text())'.format( 173 | value)).extract_first() 174 | else: 175 | vv = tbody.xpath('string(.//td[contains(text(),"{}")]/following-sibling::td)'.format( 176 | value)).extract_first() 177 | 178 | vv = vv.replace(',', ';') 179 | item[key] = vv 180 | 181 | glr_bh = tbody.xpath('normalize-space(.//td[contains(text(),"{}")]/following-sibling::td[1]/a/@href)'.format( 182 | "基金管理人名称")).extract_first() 183 | 184 | glr_bh_s = self.find_last(glr_bh, '/') + 1 185 | glr_bh_e = self.find_last(glr_bh, '.') 186 | glr_bh = glr_bh[glr_bh_s: glr_bh_e] 187 | item['PARENTID'] = glr_bh 188 | return item 189 | 190 | # 获取最后出现的位置 191 | def find_last(self, s1, s2): 192 | last_position = -1 193 | while True: 194 | position = s1.find(s2, last_position + 1) 195 | if position == -1: 196 | return last_position 197 | last_position = position 198 | -------------------------------------------------------------------------------- /spider/spider/util/UserAgentUtil.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import os 4 | 5 | from fake_useragent import UserAgent, FakeUserAgentError 6 | 7 | 8 | class UserAgentUtil(object): 9 | file_path = os.getcwd() + '/useragent.txt' 10 | file_json = {} 11 | 12 | def getUA(self): 13 | file_exists = os.path.isfile(self.file_path) 14 | if file_exists: 15 | with open(self.file_path, 'r') as f: 16 | self.file_json = json.loads(f.read()) 17 | else: 18 | try: 19 | ua = UserAgent() 20 | ua_list = [] 21 | for i in ua.data_browsers.values(): 22 | ua_list.extend(i) 23 | self.file_json['useragent'] = ua_list 24 | with open(self.file_path, 'w') as f: 25 | f.write(json.dumps(self.file_json, indent=4)) 26 | except FakeUserAgentError: 27 | print("获取UA失败,请重试。。。") 28 | return self.file_json 29 | -------------------------------------------------------------------------------- /spider/spider/util/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bingo-zh/scrapy-amac/3c0ba94121373b644a6fc357b25366f14ecc4427/spider/spider/util/__init__.py -------------------------------------------------------------------------------- /spider/useragent.txt: -------------------------------------------------------------------------------- 1 | { 2 | "useragent": [ 3 | "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", 4 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", 5 | "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36", 6 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36", 7 | "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36", 8 | "Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36", 9 | "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36", 10 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36", 11 | "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36", 12 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36", 13 | "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36", 14 | "Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36", 15 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36", 16 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36", 17 | "Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36", 18 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36", 19 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36", 20 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36", 21 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36", 22 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36", 23 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36", 24 | "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/4E423F", 25 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10", 26 | "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36", 27 | "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36", 28 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", 29 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", 30 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36", 31 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36", 32 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36", 33 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36", 34 | "Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36", 35 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36", 36 | "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36", 37 | "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36", 38 | "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36", 39 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.55 Safari/537.36", 40 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 41 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 42 | "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 43 | "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 44 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 45 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", 46 | "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36", 47 | "Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", 48 | "Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", 49 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17", 50 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17", 51 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15", 52 | "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14", 53 | "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16", 54 | "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14", 55 | "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14", 56 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14", 57 | "Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02", 58 | "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00", 59 | "Opera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00", 60 | "Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00", 61 | "Opera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00", 62 | "Mozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/14.0 Opera/12.0", 63 | "Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62", 64 | "Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.10.229 Version/11.62", 65 | "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52", 66 | "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52", 67 | "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51", 68 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; de) Opera 11.51", 69 | "Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50", 70 | "Opera/9.80 (X11; Linux i686; U; hu) Presto/2.9.168 Version/11.50", 71 | "Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11", 72 | "Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11", 73 | "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/5.0 Opera 11.11", 74 | "Opera/9.80 (X11; Linux x86_64; U; bg) Presto/2.8.131 Version/11.10", 75 | "Opera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10", 76 | "Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.131 Version/11.10", 77 | "Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1", 78 | "Opera/9.80 (X11; Linux x86_64; U; Ubuntu/10.10 (maverick); pl) Presto/2.7.62 Version/11.01", 79 | "Opera/9.80 (X11; Linux i686; U; ja) Presto/2.7.62 Version/11.01", 80 | "Opera/9.80 (X11; Linux i686; U; fr) Presto/2.7.62 Version/11.01", 81 | "Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01", 82 | "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.7.62 Version/11.01", 83 | "Opera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01", 84 | "Opera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01", 85 | "Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.7.62 Version/11.01", 86 | "Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.7.62 Version/11.01", 87 | "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.7.62 Version/11.01", 88 | "Opera/9.80 (Windows NT 5.1; U;) Presto/2.7.62 Version/11.01", 89 | "Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.7.62 Version/11.01", 90 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101213 Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01", 91 | "Mozilla/5.0 (Windows NT 6.1; U; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01", 92 | "Mozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01", 93 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01", 94 | "Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00", 95 | "Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00", 96 | "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00", 97 | "Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00", 98 | "Opera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00", 99 | "Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.7.62 Version/11.00", 100 | "Opera/9.80 (Windows NT 6.1; U; en-GB) Presto/2.7.62 Version/11.00", 101 | "Opera/9.80 (Windows NT 6.1 x64; U; en) Presto/2.7.62 Version/11.00", 102 | "Opera/9.80 (Windows NT 6.0; U; en) Presto/2.7.39 Version/11.00", 103 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1", 104 | "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0", 105 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0", 106 | "Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0", 107 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20130401 Firefox/31.0", 108 | "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0", 109 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20120101 Firefox/29.0", 110 | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/29.0", 111 | "Mozilla/5.0 (X11; OpenBSD amd64; rv:28.0) Gecko/20100101 Firefox/28.0", 112 | "Mozilla/5.0 (X11; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0", 113 | "Mozilla/5.0 (Windows NT 6.1; rv:27.3) Gecko/20130101 Firefox/27.3", 114 | "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:27.0) Gecko/20121011 Firefox/27.0", 115 | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0", 116 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0", 117 | "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0", 118 | "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0", 119 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0", 120 | "Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/23.0", 121 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0", 122 | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:23.0) Gecko/20131011 Firefox/23.0", 123 | "Mozilla/5.0 (Windows NT 6.2; rv:22.0) Gecko/20130405 Firefox/22.0", 124 | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130328 Firefox/22.0", 125 | "Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0", 126 | "Mozilla/5.0 (Microsoft Windows NT 6.2.9200.0); rv:22.0) Gecko/20130405 Firefox/22.0", 127 | "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/21.0.1", 128 | "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/21.0.1", 129 | "Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:21.0.0) Gecko/20121011 Firefox/21.0.0", 130 | "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0", 131 | "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0", 132 | "Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0", 133 | "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20130514 Firefox/21.0", 134 | "Mozilla/5.0 (Windows NT 6.2; rv:21.0) Gecko/20130326 Firefox/21.0", 135 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130401 Firefox/21.0", 136 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130331 Firefox/21.0", 137 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130330 Firefox/21.0", 138 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0", 139 | "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130401 Firefox/21.0", 140 | "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0", 141 | "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0", 142 | "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130401 Firefox/21.0", 143 | "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20130331 Firefox/21.0", 144 | "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0", 145 | "Mozilla/5.0 (Windows NT 5.0; rv:21.0) Gecko/20100101 Firefox/21.0", 146 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0", 147 | "Mozilla/5.0 (Windows NT 6.2; Win64; x64;) Gecko/20100101 Firefox/20.0", 148 | "Mozilla/5.0 (Windows x86; rv:19.0) Gecko/20100101 Firefox/19.0", 149 | "Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/19.0", 150 | "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/18.0.1", 151 | "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0", 152 | "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6", 153 | "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko", 154 | "Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko", 155 | "Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0", 156 | "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 7.0; InfoPath.3; .NET CLR 3.1.40767; Trident/6.0; en-IN)", 157 | "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)", 158 | "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)", 159 | "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)", 160 | "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/4.0; InfoPath.2; SV1; .NET CLR 2.0.50727; WOW64)", 161 | "Mozilla/5.0 (compatible; MSIE 10.0; Macintosh; Intel Mac OS X 10_7_3; Trident/6.0)", 162 | "Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)", 163 | "Mozilla/4.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/5.0)", 164 | "Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1)", 165 | "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))", 166 | "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", 167 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)", 168 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7)", 169 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; Media Center PC 6.0; InfoPath.3; MS-RTC LM 8; Zune 4.7", 170 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; InfoPath.3; MS-RTC LM 8; .NET4.0C; .NET4.0E)", 171 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; chromeframe/12.0.742.112)", 172 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", 173 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", 174 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 4.0; Tablet PC 2.0; InfoPath.3; .NET4.0C; .NET4.0E)", 175 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0", 176 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; yie8)", 177 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322; .NET4.0C; Tablet PC 2.0)", 178 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; FunWebProducts)", 179 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/13.0.782.215)", 180 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; chromeframe/11.0.696.57)", 181 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) chromeframe/10.0.648.205", 182 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.1; SV1; .NET CLR 2.8.52393; WOW64; en-US)", 183 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; chromeframe/11.0.696.57)", 184 | "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.1.76908; WOW64; en-US)", 185 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)", 186 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", 187 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.8.36217; WOW64; en-US)", 188 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; .NET CLR 2.7.58687; SLCC2; Media Center PC 5.0; Zune 3.4; Tablet PC 3.6; InfoPath.3)", 189 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)", 190 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)", 191 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)", 192 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", 193 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; SLCC1; .NET CLR 1.1.4322)", 194 | "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.0; Trident/4.0; InfoPath.1; SV1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 3.0.04506.30)", 195 | "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.0; Trident/4.0; FBSMTWB; .NET CLR 2.0.34861; .NET CLR 3.0.3746.3218; .NET CLR 3.5.33652; msn OptimizedIE8;ENUS)", 196 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)", 197 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8)", 198 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8", 199 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C)", 200 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.3; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MS-RTC LM 8)", 201 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)", 202 | "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Zune 3.0)", 203 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A", 204 | "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25", 205 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2", 206 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10", 207 | "Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 Mobile/9B176 Safari/7534.48.3", 208 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1", 209 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; da-dk) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1", 210 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 211 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 212 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; fr-FR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 213 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 214 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; cs-CZ) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 215 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 216 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 217 | "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; zh-cn) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 218 | "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 219 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 220 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; zh-cn) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 221 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; sv-se) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 222 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; ko-kr) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 223 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 224 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 225 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; fr-fr) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 226 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; es-es) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 227 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 228 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-gb) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 229 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", 230 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; sv-SE) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 231 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 232 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 233 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 234 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 235 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; de-DE) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 236 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 237 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 238 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 239 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 240 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 241 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; fr-ch) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 242 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; de-de) AppleWebKit/534.15+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 243 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; ar) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 244 | "Mozilla/5.0 (Android 2.2; Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4", 245 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-HK) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 246 | "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 247 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; tr-TR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 248 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 249 | "Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 250 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 251 | "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5", 252 | "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5" 253 | ] 254 | } --------------------------------------------------------------------------------