├── .gitignore ├── CodeStatistics ├── CodeStat.py ├── CodeStatistics.py └── demo.png ├── DefinedWallpaper ├── MainGui.py ├── book.bmp ├── demo.png ├── setWarpaper.py └── sina_weather_api.py ├── LICENSE ├── LogWeb ├── WebServer │ ├── logToWeb.py │ └── template │ │ └── index.html ├── logp.py └── test.py ├── README.md ├── Rebot ├── robot.py ├── test1.mp3 ├── vico.py └── yuyinshibie.py ├── SERank ├── README.md ├── SearchEngineRank_Ver0.2.py ├── demo.gif ├── demo2.gif └── requirements.txt ├── SpiderSinaweibo ├── Cookie.txt ├── SinaWeibo.py ├── WAPSinaWei │ ├── SinaWeiboSpider.py │ ├── WapSinaWeiboLogin.py │ ├── db.py │ └── items.py ├── WWWSinaWeiboLogin │ └── SinaWeiboLogin.py └── rsakey.py ├── algorithm ├── __init__.py ├── charu.py ├── insert.py ├── jishu.py ├── maopao.py ├── seed.py ├── times.py ├── xier.py └── xuanze.py ├── hospital ├── hospital │ ├── __init__.py │ ├── items.py │ ├── pipelines.py │ ├── settings.py │ └── spiders │ │ ├── __init__.py │ │ └── hospitalSpider.py └── scrapy.cfg ├── news ├── requirements.txt └── toutiao.py ├── proxyip ├── proxyip.py ├── proxyip.txt └── requirements.txt └── spiderITEbook └── ITEBook.py /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/.gitignore -------------------------------------------------------------------------------- /CodeStatistics/CodeStat.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import wx 3 | import os 4 | import glob 5 | from CodeStatistics import Statistics, isdir 6 | 7 | class OnDropFile(wx.FileDropTarget): 8 | def __init__(self, widgt): 9 | wx.FileDropTarget.__init__(self) 10 | self.widgt = widgt 11 | 12 | def OnDropFiles(self, x, y, fileNames): 13 | self.widgt.SetLabelText(u"正在统计请稍等……") 14 | allFile = list() 15 | allFile = isdir(fileNames, allFile) 16 | result = Statistics(allFile) 17 | result.count() 18 | self.widgt.SetLabelText(u""" 19 | 一共统计{f}个Python文件 20 | 代码行:{c} 21 | 注释行:{n} 22 | 空白行:{v} 23 | """.format(f=result.file_num, c=result.c_lines, n=result.n_lines, v=result.v_lines)) 24 | 25 | 26 | class Frame(wx.Frame): 27 | def __init__(self): 28 | frame = wx.Frame.__init__(self, None, -1, u"代码统计", pos=(200, 300), size=(300, 150), style=wx.MINIMIZE_BOX | 29 | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN) 30 | self.panel = wx.Panel(self) 31 | sizer = wx.BoxSizer(wx.VERTICAL) 32 | self.labelResult = wx.StaticText( 33 | self.panel, -1, u"拖放文件/文件夹到此处", size=(300, 150),style=wx.ALIGN_CENTER) 34 | sizer.Add(self.labelResult, wx.EXPAND) 35 | self.panel.SetSizer(sizer) 36 | self.labelResult.SetDropTarget(OnDropFile(self.labelResult)) 37 | 38 | app = wx.App() 39 | Frame().Show() 40 | app.MainLoop() 41 | -------------------------------------------------------------------------------- /CodeStatistics/CodeStatistics.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import os 3 | import sys 4 | import glob 5 | import getopt 6 | 7 | 8 | print u""" 9 | +----------------------------------------+ 10 | | Author:NvRay | 11 | | Date:2016-6-13 | 12 | | 说明:用于统计Python代码行数 | 13 | | 输入参数 -f | 14 | +----------------------------------------+ 15 | """ 16 | 17 | 18 | class Statistics(object): 19 | 20 | def __init__(self, file): 21 | self.files=file 22 | self.c_lines = 0 # 代码行数 23 | self.n_lines = 0 # 注释行数 24 | self.v_lines = 0 # 空行 25 | 26 | def readfile(self, file): 27 | print file 28 | code = open(file) 29 | while 1: 30 | linecode = code.readline() 31 | if linecode: 32 | linecode = linecode.strip() 33 | if linecode == "": 34 | self.v_lines += 1 35 | elif linecode[0] == "#": 36 | self.n_lines += 1 37 | 38 | else: 39 | self.c_lines += 1 40 | else: 41 | break 42 | 43 | def count(self): 44 | self.file_num = 0 45 | for file in self.files: 46 | self.file_num += 1 47 | self.readfile(file) 48 | print u"一共{num}个文件,处理完毕!".format(num=self.file_num) 49 | 50 | def isdir(paths,files): 51 | hasdir=False 52 | dirAll=[] 53 | for f in paths: 54 | if os.path.isdir(f): 55 | hasdir=True 56 | dirAll+=glob.glob(f+os.sep+"*") 57 | else: 58 | if f[-3:]==".py": 59 | files.append(f) 60 | if not hasdir: 61 | return files 62 | return isdir(dirAll,files) 63 | 64 | 65 | 66 | 67 | if __name__ == "__main__": 68 | opts, args = getopt.getopt(sys.argv[1:], "hf:", ["help", "file"]) 69 | for opt, value in opts: 70 | if opt in ["-h", "--help"]: 71 | print """ 72 | None Options: 73 | Current Python's dir. 74 | 75 | General Options: 76 | -h, --help Show help. 77 | -f, --file File or dir(String). 78 | """ 79 | sys.exit() 80 | elif opt in ["-f", "--file"]: 81 | if os.path.isdir(value): 82 | files=[] 83 | files=isdir([value],files) 84 | else: 85 | if not os.path.exists(value): 86 | print u"文件不存在" 87 | sys.exit() 88 | else: 89 | files = [value] 90 | result = Statistics(files) 91 | else: 92 | result = Statistics([os.path.dirname(__file__)]) 93 | result.count() 94 | print u""" 95 | #############结果############# 96 | 代码 97 | 总行数:{c} 98 | 注释行:{n} 99 | 空白行:{v} 100 | ############################# 101 | """.format(c=result.c_lines, n=result.n_lines, v=result.v_lines) 102 | -------------------------------------------------------------------------------- /CodeStatistics/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/CodeStatistics/demo.png -------------------------------------------------------------------------------- /DefinedWallpaper/MainGui.py: -------------------------------------------------------------------------------- 1 | #!coding:utf-8 2 | from PyQt4 import QtCore, QtGui 3 | import sys 4 | import os 5 | from setWarpaper import NoteWallpaper 6 | 7 | try: 8 | _fromUtf8 = QtCore.QString.fromUtf8 9 | except AttributeError: 10 | def _fromUtf8(s): 11 | return s 12 | from functools import partial 13 | 14 | 15 | class ArgsError(Exception): 16 | pass 17 | 18 | 19 | class Ui_MainWindows(QtGui.QWidget): 20 | 21 | def __init__(self): 22 | QtGui.QWidget.__init__(self) 23 | self.setWindowTitle(u"笔记壁纸") 24 | icon = QtGui.QIcon() 25 | icon.addPixmap( 26 | QtGui.QPixmap(_fromUtf8("ttt.ico")), QtGui.QIcon.Normal, QtGui.QIcon.Off) 27 | self.setWindowIcon(icon) 28 | 29 | self.filetext = QtGui.QLineEdit( 30 | os.path.join(os.path.dirname(__file__), "")) 31 | inputfile = QtGui.QPushButton(u"选择文件") 32 | hbox = QtGui.QHBoxLayout() 33 | hbox.addWidget(QtGui.QLabel(u"壁纸路径:")) 34 | hbox.addWidget(self.filetext) 35 | hbox.addWidget(inputfile) 36 | 37 | self.text = QtGui.QTextEdit("") 38 | hbox2 = QtGui.QHBoxLayout() 39 | hbox2.addWidget(self.text) 40 | 41 | okbutton = QtGui.QPushButton(u"设置") 42 | hbox3 = QtGui.QHBoxLayout() 43 | hbox3.addStretch() 44 | hbox3.addWidget(okbutton) 45 | hbox3.addStretch() 46 | 47 | vbox = QtGui.QVBoxLayout() 48 | vbox.addLayout(hbox) 49 | vbox.addLayout(hbox2) 50 | vbox.addLayout(hbox3) 51 | self.setLayout(vbox) 52 | 53 | self.connect( 54 | inputfile, QtCore.SIGNAL("clicked()"), self.openfile_clicked) 55 | self.connect(okbutton, QtCore.SIGNAL("clicked()"), self.setup) 56 | self.resize(600, 400) 57 | 58 | def openfile_clicked(self): 59 | self.filename = QtGui.QFileDialog.getOpenFileName( 60 | self, 'Open file', os.path.dirname(__file__), u"图像文件 (*.bmp);;All Files (*)") 61 | self.filetext.setText(self.filename) 62 | 63 | def nofile(self): 64 | QtGui.QMessageBox.critical(self, u"警告", u"未选择文件!") 65 | 66 | def errorpath(self): 67 | QtGui.QMessageBox.critical(self, u"警告", u"错误的文件或路径!") 68 | 69 | def setup(self): 70 | text = self.text.toPlainText().toLocal8Bit() 71 | imagepath = self.filetext.text() 72 | if NoteWallpaper(text=unicode(text, "gbk", "ignore"), imgpath=str(imagepath)).setWallpaper() == "FilePathError": 73 | self.errorpath() 74 | else: 75 | QtGui.QMessageBox.information(self, u"提示", u"设置成功!") 76 | 77 | app = QtGui.QApplication(sys.argv) 78 | w = Ui_MainWindows() 79 | # w.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) 80 | w.setWindowFlags( 81 | w.windowFlags() & ~QtCore.Qt.WindowMaximizeButtonHint) # 禁用最大化按钮 82 | w.show() 83 | app.exec_() 84 | -------------------------------------------------------------------------------- /DefinedWallpaper/book.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/DefinedWallpaper/book.bmp -------------------------------------------------------------------------------- /DefinedWallpaper/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/DefinedWallpaper/demo.png -------------------------------------------------------------------------------- /DefinedWallpaper/setWarpaper.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | import win32gui 3 | import win32con 4 | import win32api 5 | import os 6 | import sys 7 | from PIL import Image 8 | from PIL import ImageDraw 9 | from PIL import ImageFont 10 | 11 | 12 | class NoteWallpaper(object): 13 | """ 14 | eq:NoteWallpaper(text,imgpath).setWallpaper() 15 | text:设置文本 16 | imgpath:设置壁纸路径(默认"C:\wallpaper\book.bmp") 17 | """ 18 | def __init__(self,text,imgpath="C:\\wallpaper\\book.bmp"): 19 | self.text=text.split("\n") 20 | self.imgpath=imgpath 21 | 22 | def setWallpaper(self,fontsize=22,verticalspacing=26,leftmargin=800): 23 | if self.__setimage(fontsize,verticalspacing,leftmargin)=="FilePathError": 24 | return "FilePathError" 25 | k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE) 26 | win32api.RegSetValueEx(k, "WallpaperStyle", 0, win32con.REG_SZ, "2") 27 | win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0") 28 | win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, self.wallpaperpath, 1+2) 29 | 30 | def __setimage(self,fontsize,verticalspacing,leftmargin): 31 | 32 | try: 33 | img=Image.open(self.imgpath) 34 | except IOError: 35 | return "FilePathError" 36 | a=ImageDraw.Draw(img) 37 | font = ImageFont.truetype ("YaHei.Consolas.1.11b.ttf",fontsize) 38 | if self.text!=[""]: 39 | for row,t in enumerate(self.text): 40 | a.text((img.size[0]-leftmargin,row*verticalspacing),t,fill=(255,255,255,128),font=font) 41 | self.wallpaperpath=os.path.join(os.path.dirname(self.imgpath),"notewallpaper.bmp") 42 | img.save(self.wallpaperpath) 43 | 44 | if __name__ == "__main__": 45 | text="" 46 | NoteWallpaper(text).setWallpaper() 47 | -------------------------------------------------------------------------------- /DefinedWallpaper/sina_weather_api.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-14 19:06:21 4 | # @Author : NvRay (you@example.org) 5 | 6 | 7 | import urllib,urllib2 8 | import json 9 | from setWarpaper import NoteWallpaper 10 | 11 | 12 | 13 | class weather_api(object): 14 | """ 15 | 新浪天气查询接口 16 | city:城市 17 | day:天数 (0:当天) 18 | """ 19 | 20 | def __init__(self,city): 21 | self.city=city 22 | # self.city=city 23 | 24 | def query(self): 25 | url = 'http://apis.baidu.com/heweather/weather/free?city=beijing' 26 | req = urllib2.Request("http://apis.baidu.com/heweather/weather/free?city={city}".format(city=self.city)) 27 | 28 | req.add_header("apikey", "c92bd543d8b5391c861d1a19e59c6cdf") 29 | 30 | resp = urllib2.urlopen(req) 31 | # f=urllib2.urlopen(req) 32 | weather_data=resp.read() 33 | return json.loads(weather_data) # print data 34 | #c92bd543d8b5391c861d1a19e59c6cdf 35 | if __name__ == "__main__": 36 | data=weather_api(u"chengdu".encode("gbk")).query()["HeWeather data service 3.0"][0] 37 | 38 | # print u"天气:%s" %data["now"]["cond"]["txt"] 39 | # print u"温度 {} ℃ ".format(data["now"]["tmp"]) 40 | # print u"{dir} {sc}级 风速{spd}kmph".format(dir=data["now"]["wind"]["dir"],sc=data["now"]["wind"]["sc"],spd=data["now"]["wind"]["spd"]) 41 | # print u"温馨提示:{txt}".format(txt=data["suggestion"]["comf"]["txt"]) 42 | # print u"更新:{}".format(data["basic"]["update"]["loc"]) 43 | txt=data["suggestion"]["comf"]["txt"] 44 | txt="\n".join(txt[i:i+15] for i in xrange(0,len(txt),15)) 45 | text=u""" 46 | 城市:{city} 47 | 天气:{cond} 48 | 温度:{tmp} ℃ 49 | {dir} {sc}级 风速{spd}kmph 50 | 温馨提示: 51 | {txt} 52 | 更新:{update} 53 | """.format(city=data["basic"]["city"],cond=data["now"]["cond"]["txt"],tmp=data["now"]["tmp"],dir=data["now"]["wind"]["dir"],sc=data["now"]["wind"]["sc"],spd=data["now"]["wind"]["spd"],txt=txt,update=data["basic"]["update"]["loc"]) 54 | print text 55 | if NoteWallpaper(text,imgpath="C:\\wallpaper\\book.bmp").setWallpaper(verticalspacing=30,leftmargin=500)=="FilePathError": 56 | print u"壁纸路径错误设置失败" 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /LogWeb/WebServer/logToWeb.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2018/4/4 9:42 4 | # Change Activity: 5 | # 2018/4/4 6 | # @Author : NvRay 7 | # @File : logForWeb.py 8 | # @Software: PyCharm 9 | 10 | import logging 11 | import functools 12 | import webbrowser 13 | import os 14 | from aiohttp import web 15 | import asyncio 16 | import websockets 17 | from multiprocessing import Process,Queue 18 | from jinja2 import Environment 19 | from jinja2 import FileSystemLoader 20 | import platform 21 | import socket 22 | import struct 23 | 24 | 25 | """ 26 | 日志调试web平台 27 | """ 28 | 29 | 30 | logging.basicConfig(level=logging.INFO) 31 | 32 | if not "logp" in locals(): 33 | logp = print 34 | 35 | sysType = platform.system() 36 | if sysType == "Linux": 37 | import fcntl 38 | DEBUG = True 39 | KNXOBJ = dict() 40 | coroutines = None 41 | 42 | def getIpAddress(ifname): 43 | # 获取IP地址 44 | if sysType == "Linux": 45 | if isinstance(ifname, str): 46 | ifname = ifname.encode() 47 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 48 | myaddr = socket.inet_ntoa( 49 | fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))[20:24]) # SIOCGIFADDR 50 | elif sysType == "Windows": 51 | # 获取本机电脑名 52 | myname = socket.getfqdn(socket.gethostname()) 53 | # 获取本机ip 54 | myaddr = socket.gethostbyname(myname) 55 | else: 56 | logp("Error Unknown platform!") 57 | return "" 58 | 59 | return myaddr 60 | 61 | #绑定路由和函数 62 | class RequestRoute(object): 63 | 64 | def __init__(self,app,fn,path): 65 | for a in list(locals().keys()): 66 | setattr(self, a, locals()[a]) 67 | 68 | def __call__(self, *args, **kwargs): 69 | pass 70 | 71 | def route(path,*method): 72 | def decorator(func): 73 | @functools.wraps(func) 74 | def wrapper(*args,**kargs): 75 | return web.Response(body=func(*args,**kargs),content_type='text/html',charset='utf-8') 76 | wrapper._path = path 77 | if len(method)>0: 78 | wrapper._method = method[0].upper() 79 | else: 80 | wrapper._method = "GET" 81 | return wrapper 82 | return decorator 83 | 84 | 85 | class RecvLogMsg(Process): 86 | def __init__(self,recvQueue): 87 | self.recvQueue = recvQueue 88 | super(RecvLogMsg,self).__init__() 89 | 90 | def run(self): 91 | print("start recv log listen Process") 92 | port = 9999 93 | localIP = getIpAddress("eth0") 94 | 95 | recvQueue = self.recvQueue 96 | loop = asyncio.get_event_loop() 97 | class ListenUDPunicast: 98 | def connection_made(self, transport): 99 | self.transport = transport 100 | 101 | def error_received(self): 102 | logging.warning("log received error!") 103 | 104 | def datagram_received(self, data, addr): 105 | self.fromAddr = addr 106 | print(data) 107 | recvQueue.put((addr,data)) 108 | 109 | listen = loop.create_datagram_endpoint(ListenUDPunicast, local_addr=(localIP, port)) 110 | loop.run_until_complete(listen) 111 | loop.run_forever() 112 | 113 | 114 | class SendLogMsg(Process): 115 | def __init__(self,q): 116 | self.q = q 117 | super(SendLogMsg,self).__init__() 118 | 119 | def run(self): 120 | print("start webSocket send Process") 121 | async def echo(websocket, path): 122 | while 1: 123 | if not self.q.empty(): 124 | res = self.q.get() 125 | sendData = "{}>>{}".format(res[0][0],res[1].decode()) 126 | print("send data :",sendData) 127 | await websocket.send(sendData) 128 | 129 | asyncio.get_event_loop().run_until_complete( 130 | websockets.serve(echo, '127.0.0.1', 9998)) 131 | asyncio.get_event_loop().run_forever() 132 | 133 | 134 | 135 | #视图函数 136 | 137 | @route("/") 138 | def index(request): 139 | return request.app["template"].get_template('index.html').render() 140 | 141 | @route("/test") 142 | def test(request): 143 | return "Test Info " 144 | 145 | @route("/watchdebug") 146 | def watchdebug(request): 147 | #网页滚动日志 148 | """ 149 | websocket 实时更新调试信息 150 | """ 151 | return "debug" 152 | 153 | 154 | class Route(object): 155 | """ 156 | 搜索全局路由函数注册 157 | """ 158 | def __init__(self,app): 159 | self.app = app 160 | self.allRouteFunc = [] 161 | self.routeMap = dict() 162 | self.__route() 163 | 164 | def __addRoute(self,func): 165 | method = func._method 166 | path = func._path 167 | self.routeMap[path] = "{}:{}".format(method,func.__name__) 168 | print(method,path,func) 169 | self.app.router.add_route(method, path, func) 170 | 171 | def __route(self): 172 | for fName in globals(): 173 | if getattr(globals()[fName], "_method", None) and getattr(globals()[fName], "_path", None): 174 | rFunc = globals()[fName] 175 | self.allRouteFunc.append(rFunc) 176 | self.__addRoute( rFunc) 177 | 178 | def map(self): 179 | return self.routeMap 180 | 181 | def __repr__(self): 182 | res = "" 183 | for k,v in self.routeMap.items(): 184 | res +="'{}' => {}\n".format(k,v) 185 | return res 186 | 187 | 188 | 189 | async def init(loop,addr): 190 | ip,port = addr 191 | app = web.Application(loop=loop) 192 | env = Environment(loader=FileSystemLoader(os.path.join(os.path.dirname(__file__), "template"), 'utf-8')) 193 | app["template"] = env 194 | Route(app) 195 | srv = await loop.create_server(app.make_handler(), ip, port) 196 | webbrowser.open("http://127.0.0.1:5001") 197 | logging.info('server started at http://127.0.0.1:5001...') 198 | return srv 199 | 200 | def run(ip="0.0.0.0",port=5001): 201 | recvQueue = Queue() 202 | # 日志消息监听 存入队列消息 203 | recvT = RecvLogMsg(recvQueue) 204 | #开启websocket 日志推送 取出队列消息 205 | sendT = SendLogMsg(recvQueue) 206 | recvT.start() 207 | sendT.start() 208 | addr = (ip,port) 209 | loop = asyncio.get_event_loop() 210 | loop.run_until_complete(init(loop,addr)) 211 | loop.run_forever() 212 | 213 | 214 | if __name__ == "__main__": 215 | run() 216 | 217 | -------------------------------------------------------------------------------- /LogWeb/WebServer/template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 日志平台 6 | 7 | 61 | 103 | 104 | 105 | 106 | 109 | 110 |
111 |
    112 |
  • Log Terminal Start:
  • 113 |
114 |
115 | 116 | 117 | -------------------------------------------------------------------------------- /LogWeb/logp.py: -------------------------------------------------------------------------------- 1 | from socket import * 2 | webLogServer ={ 3 | "ip":"192.168.0.30", 4 | "port":9999 5 | } 6 | def logp(msg): 7 | msg = msg.encode() 8 | skt = socket(AF_INET,SOCK_DGRAM) 9 | skt.sendto(msg,(webLogServer["ip"],webLogServer["port"])) 10 | skt.close() -------------------------------------------------------------------------------- /LogWeb/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | # @Time : 2018/4/11 10:49 4 | # Change Activity: 5 | # 2018/4/11 6 | # @Author : NvRay 7 | # @File : linuxTestPro.py 8 | # @Software: PyCharm 9 | 10 | from socket import * 11 | webLogServer ={ 12 | "ip":"192.168.0.30", 13 | "port":9999 14 | } 15 | def logp(msg): 16 | msg = msg.encode() 17 | skt = socket(AF_INET,SOCK_DGRAM) 18 | skt.sendto(msg,(webLogServer["ip"],webLogServer["port"])) 19 | skt.close() 20 | 21 | from time import sleep 22 | import datetime 23 | 24 | a = 0 25 | while 1: 26 | sleep(1) 27 | a+=1 28 | logp("<{t} - {n}> 来自服务器第{n}声问候~".format(t = datetime.datetime.now(),n =a)) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 日常代码练习 2 | 3 | 4 | *注:平时写的一些小脚本现在整合开源供大家参考学习* 5 | 6 | ------ 7 | > algorithm **算法python实现** 8 | 9 | * 使用python 写出各种排序算法 10 | 1. 插入排序算法 11 | 2. 计数排序算法 12 | 3. 冒泡排序算法 13 | 4. 希尔排序算法 14 | 5. 选择排序算法 15 | 16 | > CodeStatics **Python代码统计** 17 | 18 | * 统计Python代码 19 | 1. 代码行数 20 | 2. 代码注释 21 | 3. 空行数 22 | 23 | * wxPython开发GUI界面 24 | * 展示![demo](/CodeStatistics/demo.png) 25 | 26 | > DefinedWallpaper **自定义桌面壁纸** 27 | 28 | * 根据选择路径设置壁纸,并输入文字文字将显示在壁纸上 29 | * 用于在桌面显示笔记 30 | * 使用PyQt4制作GUi界面 31 | * 展示![demo](/DefinedWallpaper/demo.png) 32 | 33 | > hospital **医院网站爬虫** 34 | 35 | * 爬取站点“www.a-hospital.com” 36 | * 使用scrapy框架 37 | * 数据储存MySQL数据库 38 | 39 | > news **新闻资讯爬虫** 40 | 41 | * 爬取新闻网站标题和内容 42 | * 使用requests框架 43 | * 内容存入文本文件 44 | * 新闻网站 45 | 1. 凤凰新闻 46 | 2. 新浪新闻 47 | 3. 网易新闻 48 | 4. 搜狐新闻 49 | 5. 闽南新闻网 50 | 6. 江汛新闻网 51 | 7. 中国新闻网 52 | 53 | > proxyip **代理IP爬取** 54 | 55 | * 爬取站点“www.xicidaili.com” 56 | * 使用requests框架 57 | * 分内存入文本文件 58 | 59 | > Rebot **语音聊天机器人** 60 | 61 | * Console可进行聊天对话 62 | * 使用两个聊天API接口 63 | * 百度语音合成 64 | * 使用API站点 65 | * i.itpk.cn 66 | * www.tuling123.com 67 | 68 | > SERank **搜索引擎排名查询工具** 69 | 70 | * 批量查询指定关键词在各种搜索引擎的排名 71 | * 可以查询手机端排名 72 | * PyQt4制作的GUI界面 73 | * 展示 74 | * ![demo](/SERank/demo.gif) 75 | * ![demo2](/SERank/demo2.gif) 76 | 77 | > spiderITEbook **IT书籍爬取** 78 | 79 | * 爬取站点“www.allitebooks.com” 80 | * 使用requests模块 81 | * 爬取各类IT电子书 82 | * 数据存入MongoDB数据库 83 | 84 | > SpiderSinaweibo **新浪微博爬虫** 85 | 86 | * 爬取新浪微博数据 87 | * 移动端登录爬取移动端数据 88 | * 根据初始用户粉丝分散爬取 89 | * 数据存入MongoDB数据库 90 | 91 | 92 | > LogWeb **网页展示日志** 93 | 94 | * 即使刷新日志 95 | * 通过websocket 显示日志 96 | * 调用发送函数即可在网页端显示消息 -------------------------------------------------------------------------------- /Rebot/robot.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | #key: dad63f4a51af1f3ca78a1af6247a5a74 3 | #secret: llkg9pol12ib 4 | import requests 5 | import json 6 | class Robot(object): 7 | def moli(self,text="你好"): 8 | """return data type : unicode""" 9 | return requests.get("http://i.itpk.cn/api.php?question={}&api_key={}&api_secret={}".format(text.encode("utf-8"),"dad63f4a51af1f3ca78a1af6247a5a74","llkg9pol12ib")).text 10 | def tuling(self,text="你好"): 11 | data={ 12 | "key":"9ce9e5f76ff64f53a0f1e09df91bccc9", 13 | "info":text 14 | } 15 | return json.loads(requests.post("http://www.tuling123.com/openapi/api",data=data).content).get("text") -------------------------------------------------------------------------------- /Rebot/test1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/Rebot/test1.mp3 -------------------------------------------------------------------------------- /Rebot/vico.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import requests 4 | import json 5 | import urllib 6 | import os 7 | import time 8 | import mp3play 9 | import sys 10 | from robot import Robot 11 | class Speak(object): 12 | def __init__(self): 13 | self.key={ 14 | "grant_type":"client_credentials", 15 | "client_id":"StaCktdGz4qpAMXRHgR6hi2nWV7hUtnK", 16 | "client_secret":"vuxLXes0u0Dcm9Vv6erdbxsTnYLZcGhk" 17 | } 18 | self.filename=os.path.join(os.path.dirname(__file__),"test1.mp3") 19 | def __call__(self,text="这是测试文本"): 20 | # access_token=json.loads(requests.post("https://openapi.baidu.com/oauth/2.0/token",data=self.key).content).get("access_token") 21 | # print access_token 22 | downloadUrl="http://tsn.baidu.com/text2audio?tex={}&lan=zh&cuid=rui7157&ctp=1&tok={}".format(text.encode('utf-8'),"24.f55b17578d8bd56ded71d36b9d78b4ca.2592000.1475031284.282335-5145581") 23 | urllib.urlretrieve(downloadUrl,self.filename) 24 | mp3 = mp3play.load(self.filename) 25 | mp3.play() 26 | time.sleep(min(30, mp3.seconds())+1) 27 | mp3.stop() 28 | 29 | if __name__ == '__main__': 30 | intext="" 31 | robot=Robot() 32 | while intext!=u"再见".encode("gbk"): 33 | intext=raw_input(">>") 34 | if intext=='q': 35 | intext=u"再见".encode("gbk") 36 | answer=robot.moli(intext.decode("gbk")) 37 | print u"阿呆:{}".format(answer).encode("gbk","ignore") 38 | Speak()(answer) 39 | print u"再见!^_^" 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Rebot/yuyinshibie.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import requests 4 | import json 5 | import urllib 6 | import os 7 | import time 8 | import sys 9 | import base64 10 | class Listen(object): 11 | 12 | 13 | def __init__(self): 14 | self.key={ 15 | "grant_type":"client_credentials", 16 | "client_id":"StaCktdGz4qpAMXRHgR6hi2nWV7hUtnK", 17 | "client_secret":"vuxLXes0u0Dcm9Vv6erdbxsTnYLZcGhk" 18 | } 19 | self.filename=os.path.join(os.path.dirname(__file__),"test1.mp3") 20 | def __call__(self): 21 | access_token=json.loads(requests.post("https://openapi.baidu.com/oauth/2.0/token",data=self.key).content).get("access_token") 22 | 23 | c=open("c.txt","a+") 24 | with open("test1.mp3","rb") as f: 25 | base64.encode(f,c) 26 | vdata=c.read() 27 | c.close() 28 | data={ 29 | "format":"wav", 30 | "rate":8000, 31 | "channel":1, 32 | "token":access_token.encode('utf-8'), 33 | "cuid":"rui7157", 34 | "len":4096, 35 | "speech":vdata, 36 | } 37 | print data 38 | result=requests.post("http://vop.baidu.com/server_api",data=data).content 39 | print result 40 | 41 | if __name__ == '__main__': 42 | Listen()() 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /SERank/README.md: -------------------------------------------------------------------------------- 1 | #PyQt4 程序 2 | -------------------------------------------------------------------------------- /SERank/SearchEngineRank_Ver0.2.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | from PyQt4 import QtCore, QtGui 3 | import qdarkstyle 4 | import sys 5 | import requests 6 | import re 7 | import os 8 | import time 9 | import xlwt 10 | import datetime 11 | from threading import Thread 12 | from gevent import monkey 13 | monkey.patch_socket() 14 | monkey.patch_ssl() 15 | import gevent 16 | 17 | reload(sys) 18 | sys.setdefaultencoding("utf-8") 19 | try: 20 | _fromUtf8 = QtCore.QString.fromUtf8 21 | except AttributeError: 22 | def _fromUtf8(s): 23 | return s 24 | try: 25 | _encoding = QtGui.QApplication.UnicodeUTF8 26 | def _translate(context, text, disambig): 27 | return QtGui.QApplication.translate(context, text, disambig, _encoding) 28 | except AttributeError: 29 | def _translate(context, text, disambig): 30 | return QtGui.QApplication.translate(context, text, disambig) 31 | print u"软件已经启动......" 32 | 33 | def generate_xls(urls, keys, result,filename): 34 | """保存数据到excel文件""" 35 | xls_file = xlwt.Workbook() 36 | sheet = xls_file.add_sheet(unicode(filename), cell_overwrite_ok=True) 37 | font0 = xlwt.Font() 38 | font0.name = 'Times New Roman' 39 | font0.colour_index = 2 40 | font0.bold = True 41 | style0 = xlwt.XFStyle() 42 | style0.font = font0 43 | row = 0 44 | sheet.col(0).width = 256 * 20 45 | sheet.col(1).width = 256 * 30 46 | sheet.col(2).width = 256 * 20 47 | 48 | sheet.write(0, 0, u"网址", style0) 49 | sheet.write(0, 1, u"关键词", style0) 50 | sheet.write(0, 2, u"排名", style0) 51 | if urls != None and keys != None and result != None: 52 | for url, key, res in zip(urls, keys, result): 53 | row += 1 54 | sheet.write(row, 0, url.decode("utf-8")) 55 | sheet.write(row, 1, key.decode("utf-8")) 56 | sheet.write(row, 2, res.decode("utf-8")) 57 | fpath=os.path.join(os.path.dirname(sys.argv[0]),u"{}.xls".format(unicode(filename))) #保存文件路径 58 | print u"[提示]:文件已保存到{}".format(fpath) 59 | xls_file.save(fpath) 60 | 61 | class Query(Thread): 62 | result = list() 63 | def __init__(self, key, url, Qobj): 64 | Thread.__init__(self) 65 | if all([isinstance(key, list), isinstance(url, list)]): 66 | self.key = key 67 | self.url = url 68 | else: 69 | raise ValueError 70 | self.Qobj=Qobj 71 | self.count=0 72 | def _request(self, key,se, rn=5,mobile=False): 73 | header={"User-Agent":"Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; Lenovo A808t Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.8.5.689 U3/0.8.0 Mobile Safari/534.30"} 74 | for pn in xrange(0,rn): 75 | try: 76 | if se=="baidu": 77 | #百度搜索 78 | if self.Qobj.isMobile.checkState(): 79 | print u"手机百度:{}".format(key) 80 | baidu_single_page = requests.get( 81 | "https://m.baidu.com/s?&pn={pn}&word={key}".format(key=key, pn=pn*10),headers=header,timeout=15) 82 | baiduurl_class_div = re.findall( 83 | r"'order':'\w+','mu':'(.*?)'}", baidu_single_page.text) 84 | else: 85 | print u"百度:{}".format(key) 86 | baidu_single_page = requests.get( 87 | "http://www.baidu.com/s?wd={key}&pn={pn}".format(key=key, pn=pn*10),timeout=15) 88 | baiduurl_class_div = re.findall( 89 | r'class="c-showurl"(.*?)', baidu_single_page.text) 90 | 91 | elif se=="qihu": 92 | #360搜索 93 | if self.Qobj.isMobile.checkState(): 94 | # m.wenda.so.com 95 | #http://m.so.com/s?q={key}&src=3600w&mode=jisu&pn=2 96 | print u"手机360搜索:{}".format(key) 97 | baidu_single_page = requests.get( 98 | "http://m.so.com/s?q={key}&src=3600w&mode=jisu&pn={pn}".format(key=key, pn=pn+1),headers=header,timeout=15) 99 | baiduurl_class_div = re.findall( 100 | r'(.*?)', baidu_single_page.text) 101 | else: 102 | print u"360搜索:{}".format(key) 103 | baidu_single_page = requests.get( 104 | "https://www.so.com/s?q={key}&pn={pn}".format(key=key, pn=pn+1),timeout=15) 105 | baiduurl_class_div = re.findall( 106 | r'(.*?)', baidu_single_page.text) 107 | 108 | elif se=="sousou": 109 | #搜狗 110 | if self.Qobj.isMobile.checkState(): 111 | print u"手机搜狗:{}".format(key) 112 | baidu_single_page = requests.get("http://m.sogou.com/web/search/ajax_query.jsp?&keyword={key}&p={pn}".format(key=key, pn=pn+1),headers=header,timeout=15) 113 | baiduurl_class_div = re.findall( 114 | r'
([\s\S]*?)
', baidu_single_page.text) 115 | 116 | else: 117 | print u"搜狗:{}".format(key) 118 | baidu_single_page = requests.get( 119 | "https://www.sogou.com/web?query={key}&page={pn}".format(key=key, pn=pn+1),timeout=15) 120 | baiduurl_class_div = re.findall( 121 | r'(.*?)', baidu_single_page.text) 131 | 132 | except requests.models.ConnectionError: 133 | print u"关键词:{},第{}页,页面请求超时已经跳过!".format(key,str(pn+1)) #处理请求超时 134 | 135 | if baiduurl_class_div: 136 | for url in self.url: 137 | for index, d in enumerate(baiduurl_class_div): 138 | if url.replace("\n", "") in d: 139 | self.Qobj.tableView.setRowCount(self.count+1) #动态添加表格数据 140 | self.Qobj.tableView.setItem(self.count,0,QtGui.QTableWidgetItem(unicode(key))) #加入表格 141 | self.Qobj.tableView.setItem(self.count,1,QtGui.QTableWidgetItem(unicode(url))) 142 | self.Qobj.tableView.setItem(self.count,2,QtGui.QTableWidgetItem(u"第{}页第{}个".format(str(pn+1),str(index + 1)))) 143 | Query.result.append([url, pn+1,index + 1,key]) #保存数据 144 | self.count+=1 #记录结果数量 145 | 146 | 147 | def run(self): 148 | if self.Qobj.se == "qihu": 149 | #360搜索快速会封IP,因此关闭异步高速网络请求 150 | print u"360搜索防屏蔽开始慢速模式,请耐心等待..." 151 | for key in self.key: 152 | self._request(key,"qihu") 153 | time.sleep(3) #加入搜索延时 154 | else: 155 | #异步 156 | gevent.joinall([gevent.spawn(self._request, key,self.Qobj.se) for key in self.key]) 157 | print "*"*20 158 | print u"本次搜索完毕" 159 | print "*"*20 160 | 161 | 162 | 163 | class Ui_Form(object): 164 | def setupUi(self, Form): 165 | Form.setObjectName(_fromUtf8("Form")) 166 | Form.resize(898,700) 167 | self.gridLayout = QtGui.QGridLayout(Form) 168 | self.gridLayout.setObjectName(_fromUtf8("gridLayout")) 169 | self.baidu=QtGui.QRadioButton(Form) 170 | self.baidu.setObjectName(_fromUtf8("baidu")) 171 | self.qihu=QtGui.QRadioButton(Form) 172 | self.qihu.setObjectName(_fromUtf8("qihu")) 173 | self.sousou=QtGui.QRadioButton(Form) 174 | self.sousou.setObjectName(_fromUtf8("sousou")) 175 | self.shenma=QtGui.QRadioButton(Form) 176 | self.shenma.setObjectName(_fromUtf8("shenma")) 177 | self.isMobile=QtGui.QCheckBox(_fromUtf8("mobile")) 178 | self.isMobile.setObjectName(_fromUtf8("mobile")) 179 | self.l_se=QtGui.QLabel(Form) 180 | self.l_se.setObjectName(_fromUtf8("label_0")) 181 | self.gridLayout.addWidget(self.l_se,0,0,1,1) 182 | self.gridLayout.addWidget(self.baidu, 0, 1, 1, 1) 183 | self.gridLayout.addWidget(self.qihu, 0, 2, 1, 1) 184 | self.gridLayout.addWidget(self.sousou, 0, 3, 1, 1) 185 | self.gridLayout.addWidget(self.shenma, 0, 4, 1, 1) 186 | self.gridLayout.addWidget(self.isMobile,0,6,1,1) 187 | self.textEdit_2 = QtGui.QTextEdit(Form) 188 | self.textEdit_2.setObjectName(_fromUtf8("textEdit_2")) 189 | self.gridLayout.addWidget(self.textEdit_2, 2, 3, 1, 3) 190 | self.textEdit = QtGui.QTextEdit(Form) 191 | self.textEdit.setObjectName(_fromUtf8("textEdit")) 192 | self.gridLayout.addWidget(self.textEdit, 2, 0, 1, 3) 193 | self.tableView = QtGui.QTableWidget(Form) 194 | self.tableView.setObjectName(_fromUtf8("tableView")) 195 | self.tableView.setColumnCount(3) 196 | self.tableView.setColumnWidth(0,150) 197 | self.tableView.setHorizontalHeaderLabels([u"关键词",u"网址",u"结果"]) 198 | self.gridLayout.addWidget(self.tableView, 2, 6, 1, 1) 199 | self.label_3 = QtGui.QLabel(Form) 200 | self.label_3.setObjectName(_fromUtf8("label_3")) 201 | self.gridLayout.addWidget(self.label_3, 1, 6, 1, 1) 202 | self.label = QtGui.QLabel(Form) 203 | self.label.setObjectName(_fromUtf8("label")) 204 | self.gridLayout.addWidget(self.label, 1, 3, 1, 2) 205 | self.label_2 = QtGui.QLabel(Form) 206 | self.label_2.setObjectName(_fromUtf8("label_2")) 207 | self.gridLayout.addWidget(self.label_2, 1, 0, 1, 2) 208 | self.pushButton = QtGui.QPushButton(Form) 209 | self.pushButton.setObjectName(_fromUtf8("pushButton")) 210 | self.gridLayout.addWidget(self.pushButton, 3, 2, 1, 1) 211 | self.pushButton_2 = QtGui.QPushButton(Form) 212 | self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 213 | self.gridLayout.addWidget(self.pushButton_2, 3, 3, 1, 1) 214 | self.pushButton_3 = QtGui.QPushButton(Form) 215 | self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) 216 | self.gridLayout.addWidget(self.pushButton_3, 3, 6, 1, 1) 217 | self.retranslateUi(Form) 218 | QtCore.QMetaObject.connectSlotsByName(Form) 219 | 220 | def retranslateUi(self, Form): 221 | Form.setWindowTitle(_translate("Form", "排名查询", None)) 222 | self.label_3.setText(_translate("Form", "结果", None)) 223 | self.label.setText(_translate("Form", "网址", None)) 224 | self.label_2.setText(_translate("Form", "关键词", None)) 225 | self.pushButton.setText(_translate("Form", "开始查询", None)) 226 | self.l_se.setText(_translate("Form", "搜索引擎:", None)) 227 | self.baidu.setText(_translate("Form", "百度", None)) 228 | self.qihu.setText(_translate("Form", "360", None)) 229 | self.sousou.setText(_translate("Form", "搜狗", None)) 230 | self.shenma.setText(_translate("Form", "神马", None)) 231 | self.isMobile.setText(_translate("Form","手机端",None)) 232 | self.pushButton_2.setText(_translate("Form", "清除数据", None)) 233 | self.pushButton_3.setText(_translate("Form", "保存", None)) 234 | 235 | class MainGui(QtGui.QWidget,Ui_Form): 236 | def __init__(self,parent=None): 237 | super(MainGui,self).__init__(parent) 238 | self.setupUi(self) 239 | self.setStyleSheet(qdarkstyle.load_stylesheet()) 240 | self.baidu.setChecked(True) 241 | self.isMobile.setStyleSheet("color:#FFD700") 242 | self.connect(self.pushButton,QtCore.SIGNAL("clicked()"),self.query) 243 | self.connect(self.pushButton_3,QtCore.SIGNAL("clicked()"),self.saveData) 244 | self.connect(self.pushButton_2,QtCore.SIGNAL("clicked()"),self.cls) 245 | self.se="baidu" 246 | 247 | def query(self): 248 | 249 | keys=str(self.textEdit.toPlainText()).split("\n") #分行转换数列 250 | urls=str(self.textEdit_2.toPlainText()).split("\n") 251 | urls=[u[:-1].replace("http://","").replace("www.","") if u.strip()[-1:]=="/" else u.replace("http://"," ").replace("www.","") for u in urls] #处理用户输入字符串 252 | keys=[k.strip() for k in keys] #去除多余空格 253 | while "" in keys: 254 | keys.remove("") 255 | while "" in urls: 256 | urls.remove("") 257 | for t in ["baidu","qihu","sousou","shenma"]: 258 | if getattr(self,t).isChecked(): 259 | self.se=t 260 | self.q_thread=Query(keys,urls,self) #传递 ”1.关键字 2.网址 3.是否移动端“ 参数 261 | self.q_thread.start() 262 | def cls(self): 263 | """清除数据""" 264 | self.textEdit.setText("") 265 | self.textEdit_2.setText("") 266 | self.tableView.setRowCount(0) 267 | if hasattr(self,"q_thread"): 268 | del self.q_thread 269 | 270 | QtGui.QMessageBox.information(self,u"提示",u"清除数据成功!") 271 | 272 | def saveData(self): 273 | u=[] #存放URL的数列 274 | k=[] #关键词 275 | r=[] #结果 276 | 277 | if hasattr(self,"q_thread"): 278 | if self.q_thread.is_alive(): 279 | QtGui.QMessageBox.warning(self,u"错误",u"还在查询中请稍后再保存!") 280 | else: 281 | for url,pn,index,key in self.q_thread.result: 282 | u.append(url) 283 | k.append(key) 284 | r.append(u"第{}页第{}个".format(pn,index)) 285 | timetag=datetime.datetime.now().strftime('%b%d%y%H%M%S') #生成“时间”文件名 286 | generate_xls(u,k,r,self.se+timetag) #调用函数保存xls文件 287 | QtGui.QMessageBox.information(self,u"提示",u"保存成功!") 288 | if self.q_thread.result: #清除数据 289 | self.q_thread.result=[] 290 | else: 291 | QtGui.QMessageBox.critical(self,u"警告",u"请先查询再保存数据!") 292 | 293 | def msg(self,count): 294 | QtGui.QMessageBox.information(self,u"提示",u"一共{}条结果,查询完毕".format(count)) 295 | 296 | app=QtGui.QApplication(sys.argv) 297 | win=MainGui() 298 | win.show() 299 | app.exec_() 300 | -------------------------------------------------------------------------------- /SERank/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/SERank/demo.gif -------------------------------------------------------------------------------- /SERank/demo2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/SERank/demo2.gif -------------------------------------------------------------------------------- /SERank/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.6.0 2 | gevent==1.1.1 3 | QDarkStyle==2.2 4 | xlwt==1.0.0 -------------------------------------------------------------------------------- /SpiderSinaweibo/Cookie.txt: -------------------------------------------------------------------------------- 1 | # Netscape HTTP Cookie File 2 | # http://curl.haxx.se/rfc/cookie_spec.html 3 | # This is a generated file! Do not edit. 4 | 5 | .login.sina.com.cn TRUE / FALSE 1492329789 ALC ac%3D0%26bt%3D1460793789%26cv%3D5.0%26et%3D1492329789%26uid%3D5131401779%26vf%3D1%26vs%3D0%26vt%3D4%26es%3Dd44ebbab3fa0d6f28ec2a93b5374da4e 6 | .login.sina.com.cn TRUE / FALSE LT 1460793789 7 | .login.sina.com.cn TRUE / FALSE tgc TGT-NTEzMTQwMTc3OQ==-1460793789-gz-34B004A04A2F4A81FF9D5C02A22FE336 8 | .sina.com.cn TRUE / FALSE 1492329789 ALF 1492329789 9 | .sina.com.cn TRUE / FALSE SUB _2A256FYHtDeRxGeNP6FMV8C_LzDWIHXVZYvQlrDV_PUNbuNBeLWnxkW9LHetrK--O_W93AVaHiwnnuhYuDjiWXg.. 10 | .sina.com.cn TRUE / FALSE 1492329789 SUBP 0033WrSXqPxfM725Ws9jqgMF55529P9D9WWHRCkpGq9OyA1gpPjfSwUU 11 | .sina.com.cn TRUE / FALSE SUE es%3D495f6e83869965c421658454b1c453f7%26ev%3Dv1%26es2%3D6244bfbbd71c572d70a190d5c6eba0f7%26rs0%3D3o06%252BKOZmtNfJrCRzCLjd5zN3dNfgtgM2i1IfiT%252Fukm57jFdkxU4Kt9JUb6W54n8wt9HOKpNXb4pIkZKYEXacRYpfzTsnyW8bREQA36ODf4wtyzJvYaTYKK2CzV1U02IUqJ3NP%252BU%252BqAU7xuuYccAXGs3FEdpqDQI1kJ%252FkxcLJiA%253D%26rv%3D0 12 | .sina.com.cn TRUE / FALSE SUP cv%3D1%26bt%3D1460793789%26et%3D1460880189%26d%3D40c3%26i%3D09d1%26us%3D1%26vf%3D1%26vt%3D4%26ac%3D0%26st%3D0%26lt%3D1%26uid%3D5131401779%26user%3D18771994057%26ag%3D1%26name%3D18771994057%26nick%3DNvRay%26sex%3D1%26ps%3D0%26email%3D%26dob%3D%26ln%3D18771994057%26os%3D%26fmp%3D%26lcp%3D 13 | .sina.com.cn TRUE / FALSE SUS SID-5131401779-1460793789-GZ-kx8gh-7f091c5980638933e7a2591acf7e09d1 14 | .sina.com.cn TRUE / FALSE 1492329789 sso_info v02m6alo5qztY6dpYmhnpKZtZqWkL2Nk4SzjJOQsIyTnLeOkMDA 15 | -------------------------------------------------------------------------------- /SpiderSinaweibo/SinaWeibo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-16 09:51:21 4 | # @Author : Your Name (nvray@foxmail.com) 5 | # @Link : 6 | # @Version : $Id$ 7 | 8 | import time 9 | import urllib2 10 | import urllib 11 | import base64 12 | import json 13 | import re 14 | import os 15 | import binascii 16 | import Cookie 17 | import cookielib 18 | 19 | 20 | class LoginWeibo(object): 21 | 22 | def __init__(self, username, password): 23 | self.username = username 24 | self.password = password 25 | 26 | def login(self, login_url="http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"): 27 | j_data = self.get_sso() 28 | postdata = { 29 | 'entry': "weibo", 30 | 'gateway': '1', 31 | 'from': '', 32 | 'savestate': '7', 33 | 'userticket': '1', 34 | 'pagerefer': "", 35 | 'vsnf': '1', 36 | 'su': self.get_user(), 37 | 'service': 'miniblog', 38 | 'servertime': j_data.get("servertime"), 39 | 'nonce': j_data.get("nonce"), 40 | 'pwencode': 'rsa2', 41 | 'rsakv': j_data.get("rsakv"), 42 | 'sp': self.get_passwd(j_data.get("pubkey"), j_data.get("servertime"), j_data.get("nonce")), 43 | 'sr': "1440*900", 44 | 'encoding': 'UTF-8', 45 | 'prelt': '503', 46 | 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 47 | 'returntype': 'META' 48 | } 49 | 50 | cookie = cookielib.MozillaCookieJar("Cookie.txt") 51 | opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 52 | result = opener.open(login_url, urllib.urlencode(postdata)) 53 | cookie.save(ignore_discard=True, ignore_expires=True) 54 | 55 | html = opener.open( 56 | "http://weibo.com/p/1005055887581312").read() 57 | with open(os.path.join(os.path.dirname(__file__), "text.html"), "wb") as f: 58 | f.write(html) 59 | print "执行完毕" 60 | 61 | def get_sso(self): 62 | prelogin_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSO`Controller.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.18)&_=%s' % ( 63 | base64.b64encode(self.username), int(time.time()*1000)) 64 | sso_data = urllib2.urlopen(prelogin_url).read() 65 | 66 | # sso_data = re.findall(r"sinaSSOController\.preloginCallBack\((.*?)\)", sso_data)[0] 67 | if sso_data: 68 | return json.loads(sso_data) 69 | else: 70 | raise TypeError 71 | 72 | def get_user(self): 73 | return base64.b64encode(self.username) 74 | 75 | def get_passwd(self, pubkey, servertime, nonce): 76 | import rsa 77 | rsaPublickey = int(pubkey, 16) 78 | key = rsa.PublicKey(rsaPublickey, 65537) # 创建公钥 79 | message = str(servertime) + '\t' + str(nonce) + '\n' + \ 80 | str(self.password) # 拼接明文js加密文件中得到 81 | passwd = rsa.encrypt(message, key) # 加密 82 | passwd = binascii.b2a_hex(passwd) # 将加密信息转换为16进制。 83 | 84 | return passwd 85 | 86 | 87 | if __name__ == "__main__": 88 | LoginWeibo("18771994057", "13733431563").login() 89 | -------------------------------------------------------------------------------- /SpiderSinaweibo/WAPSinaWei/SinaWeiboSpider.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-17 14:17:42 4 | # @Author : NvRay (nvray@foxmail.com) 5 | 6 | 7 | import os 8 | from WapSinaWeiboLogin import Request 9 | from lxml import etree 10 | import re 11 | from items import SinaWeiboItem 12 | from db import dbconn 13 | from functools import partial 14 | 15 | 16 | dbconn.connect() 17 | conn = dbconn.getConn() 18 | sina_info=conn['sina'].info 19 | 20 | class BaseSpider(object): 21 | pass 22 | 23 | class WeiboSpider(BaseSpider): 24 | start_url = ["http://weibo.cn/5503137786/fans"] 25 | 26 | def __init__(self): 27 | super(BaseSpider, self).__init__() 28 | 29 | def parse(self, response): 30 | # 解析response yield link 31 | if not response: 32 | return None 33 | et = etree.HTML(response) 34 | links = et.xpath("//*[@valign='top'][1]/a/@href") 35 | urls=[] 36 | for link in links: 37 | #根据id对每个用户信息入库 38 | print link 39 | uid=re.findall(r"http://weibo\.cn/u/(\w*)", link) #认证微信号格式不同(eq:http://weibo.cn/renzhenghao) 40 | if uid: 41 | uid=uid[0] 42 | else: 43 | continue 44 | SinaWeiboItem["uid"]=uid 45 | info_url = "http://weibo.cn/{uid}/info".format(uid=uid) 46 | Request(info_url, callback=self.parse_info) 47 | datas={"uid":SinaWeiboItem["uid"],"name":SinaWeiboItem["name"],"info":SinaWeiboItem["info"]} 48 | print sina_info.insert(datas) 49 | urls.append("http://weibo.cn/{uid}/fans".format(uid=uid)) #url返回开始下次执行 50 | return urls 51 | 52 | 53 | def parse_info(self, response): 54 | et = etree.HTML(response) 55 | info = et.xpath("//*[@class='c'][3]/text()") 56 | SinaWeiboItem["name"]=info[0] 57 | SinaWeiboItem["info"]=info 58 | for i in info: 59 | print i.encode("gbk",'ignore') 60 | print "*"*30 61 | 62 | 63 | 64 | if __name__ == "__main__": 65 | parse = WeiboSpider().parse 66 | url_seed=WeiboSpider.start_url 67 | 68 | def is_duplication(url,db_uid): 69 | 70 | uid=re.findall(r"http://weibo\.cn/(\w*)/info", url)[0].decode("gbk") 71 | print "{uid} in {db_uid}".format(uid=uid,db_uid=db_uid) 72 | if uid in db_uid: 73 | return False 74 | else: 75 | return True 76 | 77 | def start(urls): 78 | url_pool=[] 79 | # new_urls=parse(response=Request(urls[0])) 80 | for url in urls: 81 | new_urls=parse(response=Request(url)) 82 | db_uid=sina_info.distinct('uid') 83 | p_is_duplication=partial(is_duplication,db_uid=sina_info.distinct('uid')) 84 | for u in new_urls: 85 | url_pool.append(u) 86 | print url_pool 87 | return start(set(url_pool)) 88 | 89 | start(url_seed) 90 | 91 | -------------------------------------------------------------------------------- /SpiderSinaweibo/WAPSinaWei/WapSinaWeiboLogin.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-16 17:14:48 4 | # @Author : NvRay (nvray@foxmail.com) 5 | 6 | from lxml import etree 7 | import requests 8 | import re 9 | from PIL import Image 10 | import cStringIO 11 | import os 12 | from chardet import detect 13 | import json 14 | import pickle 15 | 16 | 17 | cok_requests = requests.session() 18 | 19 | 20 | def write_log(filename="log.txt", mode="wb", text=""): 21 | with open(os.path.join(os.path.dirname(__file__), filename), mode) as f: 22 | f.write(text) 23 | 24 | 25 | class WeiboLogin(object): 26 | 27 | # 记录cookie请求的requests 28 | 29 | def __init__(self): 30 | # 请输入准备抓取的微博地址 31 | self.url = "https://weibo.cn" 32 | self.url_login = 'https://login.weibo.cn/login/' 33 | self.new_url = self.url 34 | 35 | def get_cookie_request(self): 36 | 37 | if os.path.exists("cookies.cok"): 38 | cok = open("cookies.cok", "r") 39 | cookies = pickle.load(cok) 40 | cok.close() 41 | else: 42 | self.login() 43 | cookies = cok_requests.cookies 44 | with open("cookies.cok", "w") as cok: 45 | pickle.dump(cookies, cok) 46 | cok_requests.cookies.update(cookies) 47 | 48 | return cok_requests 49 | 50 | def login(self): 51 | html = requests.get(self.url_login).content 52 | selector = etree.HTML(html) 53 | password = selector.xpath('//input[@type="password"]/@name')[0] 54 | vk = selector.xpath('//input[@name="vk"]/@value')[0] 55 | capid = selector.xpath('//input[@name="capId"]/@value')[0] 56 | action = selector.xpath('//form[@method="post"]/@action')[0] 57 | code = self.get_code(html) 58 | pwd, unm = None, None 59 | while not all((pwd, unm)): 60 | pwd = raw_input("username:") 61 | unm = raw_input("password:") 62 | self.new_url = self.url_login + action 63 | data = {'mobile': unm, 64 | password: pwd, 65 | 'remember': 'on', 66 | 'backURL': 'http://weibo.cn/', 67 | 'backTitle': u'微博', 68 | 'tryCount': '', 69 | 'vk': vk, 70 | 'code': code, 71 | 'capId': capid, 72 | 'submit': u'登录'} 73 | login_post = cok_requests.post(self.new_url, data=data) # 登陆post 74 | write_log(text=login_post.content) 75 | return login_post 76 | 77 | @staticmethod 78 | def get_code(html): 79 | """获取网页验证码 80 | html验证码content""" 81 | imgpath = requests.get(re.findall( 82 | r'请打开图片显示', html)[0]).content 83 | Image.open(cStringIO.StringIO(imgpath)).show() 84 | code = raw_input(u"input code:").decode("gbk") 85 | return code 86 | 87 | 88 | class Request(WeiboLogin): 89 | """ 90 | Attribute:Request(callback=None,method="get",headers=None,meta=None) 91 | callback:callback 92 | header:web header 93 | method:request method 94 | meta:post attr 95 | """ 96 | 97 | def __new__(self, url, callback=None, method="get", headers=None, meta=None): 98 | WeiboLogin().get_cookie_request() 99 | self.headers = headers or {} 100 | self.meta = meta or {} 101 | if not url: 102 | return None 103 | for i in xrange(3): 104 | response = getattr(cok_requests, method)(url, headers=self.headers) 105 | if callback: 106 | if response.status_code == 200: 107 | return callback(response=response.content) 108 | else: 109 | if response.status_code == 200: 110 | return response.content 111 | if i == 2: 112 | return None 113 | 114 | 115 | if __name__ == '__main__': 116 | 117 | WeiboLogin().get_cookie_request() 118 | -------------------------------------------------------------------------------- /SpiderSinaweibo/WAPSinaWei/db.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-19 15:19:20 4 | # @Author : NvRay (nvray@foxmail.com) 5 | 6 | 7 | from pymongo import MongoClient 8 | 9 | 10 | class DbConn(object): 11 | 12 | def __init__(self,host="127.0.0.1",port=27017): 13 | self.server="mongodb://{host}:{port}".format(host=host,port=port) 14 | self.conn=None 15 | def connect(self): 16 | self.conn=MongoClient(self.server) 17 | def close(self): 18 | return self.conn.disconnect() 19 | def getConn(self): 20 | return self.conn 21 | 22 | dbconn=DbConn() 23 | 24 | def process(): 25 | #建立连接 26 | dbconn.connect() 27 | global conn 28 | conn = dbconn.getConn() 29 | 30 | #列出server_info信息 31 | print conn.server_info() 32 | 33 | #列出全部数据库 34 | databases = conn.database_names() 35 | print databases 36 | 37 | #删除库和表 38 | dropTable() 39 | #添加数据库lifeba及表(collections)users 40 | createTable() 41 | #插入数据 42 | insertDatas() 43 | #更新数据 44 | updateData() 45 | #查询数据 46 | queryData() 47 | #删除数据 48 | deleteData() 49 | 50 | #释放连接 51 | dbconn.close() 52 | 53 | def insertDatas(): 54 | datas=[{"name":"steven1","realname":"测试1","age":25}, 55 | {"name":"steven2","realname":"测试2","age":26}, 56 | {"name":"steven1","realname":"测试3","age":23}] 57 | lifeba_users.insert(datas) 58 | 59 | def updateData(): 60 | '''只修改最后一条匹配到的数据 61 | 第3个参数设置为True,没找到该数据就添加一条 62 | 第4个参数设置为True,有多条记录就不更新 63 | ''' 64 | lifeba_users.update({'name':'steven1'},{'$set':{'realname':'测试1修改'}}, False,False) 65 | 66 | def deleteData(): 67 | lifeba_users.remove({'name':'steven1'}) 68 | 69 | def queryData(): 70 | #查询全部数据 71 | rows = lifeba_users.find() 72 | printResult(rows) 73 | #查询一个数据 74 | print lifeba_users.find_one() 75 | #带条件查询 76 | printResult(lifeba_users.find({'name':'steven2'})) 77 | printResult(lifeba_users.find({'name':{'$gt':25}})) 78 | 79 | def createTable(): 80 | '''创建库和表''' 81 | global lifeba_users 82 | lifeba_users = conn.lifeba.users 83 | 84 | def dropTable(): 85 | '''删除表''' 86 | global conn 87 | conn.drop_database("lifeba") 88 | 89 | def printResult(rows): 90 | for row in rows: 91 | for key in row.keys():#遍历字典 92 | print row[key], #加, 不换行打印 93 | print '' -------------------------------------------------------------------------------- /SpiderSinaweibo/WAPSinaWei/items.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-17 16:29:45 4 | # @Author : NvRay (nvray@foxmail.com) 5 | 6 | from db import dbconn 7 | 8 | class BuitInAttrError(Exception): 9 | """BuitIn Attri Error""" 10 | 11 | 12 | class Field(dict): 13 | 14 | """Container of field metadata""" 15 | 16 | 17 | class meta(type): 18 | 19 | def __setitem__(self, key, value): 20 | if key in dir(self): 21 | type.__setattr__(self, key, value) 22 | elif key[0] == "_": 23 | raise BuitInAttrError 24 | else: 25 | raise AttributeError 26 | 27 | def __getitem__(self, key): 28 | if key[0] == "_": 29 | raise BuitInAttrError 30 | return type.__getattribute__(self, key) 31 | 32 | 33 | class SinaWeiboItem(object): 34 | __metaclass__ = meta 35 | 36 | name = Field() 37 | uid = Field() 38 | info = Field() 39 | -------------------------------------------------------------------------------- /SpiderSinaweibo/WWWSinaWeiboLogin/SinaWeiboLogin.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-04-16 09:51:21 4 | 5 | import time 6 | import urllib2,urllib 7 | import base64 8 | import json 9 | import re 10 | import os 11 | import binascii 12 | import Cookie 13 | import cookielib 14 | class LoginWeibo(object): 15 | 16 | def __init__(self, username, password): 17 | self.username = username 18 | self.password = password 19 | 20 | def login(self,login_url="http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"): 21 | j_data = self.get_sso() 22 | postdata = { 23 | 'entry': "weibo", 24 | 'gateway': '1', 25 | 'from': '', 26 | 'savestate': '7', 27 | 'userticket': '1', 28 | 'pagerefer': "", 29 | 'vsnf': '1', 30 | 'su': self.get_user(), 31 | 'service': 'miniblog', 32 | 'servertime': j_data.get("servertime"), 33 | 'nonce': j_data.get("nonce"), 34 | 'pwencode': 'rsa2', 35 | 'rsakv': j_data.get("rsakv"), 36 | 'sp': self.get_passwd(j_data.get("pubkey"), j_data.get("servertime"), j_data.get("nonce")), 37 | 'sr': "1440*900", 38 | 'encoding': 'UTF-8', 39 | 'prelt': '503', 40 | 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 41 | 'returntype': 'META' 42 | } 43 | 44 | 45 | 46 | cookie=cookielib.MozillaCookieJar("Cookie.txt") 47 | opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 48 | result=opener.open(login_url,urllib.urlencode(postdata)) 49 | cookie.save(ignore_discard=True, ignore_expires=True) 50 | with open(os.path.join(os.path.dirname(__file__),"test.html"),"wb") as f: 51 | f.write(result.read()) 52 | print u"执行完毕" 53 | def get_sso(self): 54 | prelogin_url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSO`Controller.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.18)&_=%s' % ( 55 | base64.b64encode(self.username), int(time.time()*1000)) 56 | sso_data = urllib2.urlopen(prelogin_url).read() 57 | if sso_data: 58 | return json.loads(sso_data) 59 | else: 60 | raise TypeError 61 | 62 | def get_user(self): 63 | return base64.b64encode(self.username) 64 | 65 | def get_passwd(self, pubkey, servertime, nonce): 66 | import rsa 67 | rsaPublickey = int(pubkey, 16) 68 | key = rsa.PublicKey(rsaPublickey, 65537) #创建公钥 69 | message = str(servertime) + '\t' + str(nonce) + '\n' + str(self.password) #拼接明文js加密文件中得到 70 | passwd = rsa.encrypt(message, key) #加密 71 | passwd = binascii.b2a_hex(passwd) #将加密信息转换为16进制。 72 | return passwd 73 | 74 | 75 | if __name__ == "__main__": 76 | LoginWeibo("Your username or phone number", "Your password").login() 77 | -------------------------------------------------------------------------------- /SpiderSinaweibo/rsakey.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | rsakey.py 4 | 新浪微博提交数据时的签名类RSAKey:(PC端js方法转为python) 5 | """ 6 | import time 7 | import math 8 | import random 9 | 10 | """ 11 | #28 represents the user_agent 12 | if (c && navigator.appName == "Microsoft Internet Explorer") { 13 | d.prototype.am = g; 14 | a = 30 15 | } else if (c && navigator.appName != "Netscape") { 16 | d.prototype.am = f; 17 | a = 26 18 | } else { 19 | d.prototype.am = h; 20 | a = 28 21 | } 22 | d.prototype.DB = a; 23 | d.prototype.DM = (1 << a) - 1; 24 | d.prototype.DV = 1 << a 25 | var i = 52; 26 | d.prototype.FV = Math.pow(2, i); 27 | d.prototype.F1 = i - a; 28 | d.prototype.F2 = 2 * a - i; 29 | """ 30 | DB = 28 31 | DM = (1 << DB) -1 32 | DV = 1 << DB 33 | I = 52 34 | FV = 2**I 35 | F1 = I - DB 36 | F2 = 2*DB - I 37 | bc = None 38 | bb, bc, bd, be, bh = 256,None,[],0,0 39 | while be < bb: 40 | """ 41 | bh = Math.floor(65536 * Math.random()); 42 | bd[be++] = bh >>> 8; 43 | bd[be++] = bh & 255""" 44 | bh = int(math.floor(random.random() * 65536)) 45 | bd.append(bh >> 8) 46 | be += 1 47 | bd.append(bh & 0xff) 48 | be += 1 49 | be = 0 50 | """ 51 | function bg() { 52 | bf((new Date).getTime()) 53 | } 54 | function bf(a) { 55 | bd[be++] ^= a & 255; 56 | bd[be++] ^= a >> 8 & 255; 57 | bd[be++] ^= a >> 16 & 255; 58 | bd[be++] ^= a >> 24 & 255; 59 | be >= bb && (be -= bb) 60 | }""" 61 | def bg(): 62 | global bd,be,be,bb 63 | t = int(time.time() * 1000) 64 | bd[be] ^= t & 255 65 | be += 1 66 | bd[be] ^= t >> 8 & 255 67 | be += 1 68 | bd[be] ^= t >> 16 & 255 69 | be += 1 70 | bd[be] ^= t >> 24 & 255 71 | be += 1 72 | if be >= bb: 73 | be -= bb 74 | bg() 75 | e = int('10001',16) 76 | 77 | 78 | class RSAKey(): 79 | def __init__(self): 80 | #this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null 81 | this = self 82 | this.n = None 83 | this.e = 0 84 | this.d = None 85 | this.p = None 86 | this.q = None 87 | this.dmp1 = None 88 | this.dmq1 = None 89 | this.coeff = None 90 | 91 | def doPublic(self,a): 92 | #function bs(a){return a.modPowInt(this.e,this.n)} 93 | this = self 94 | return a.modPowInt(this.e, this.n) 95 | 96 | 97 | def setPublic(self,a,b): 98 | #"function br(a,b){if(a!=null&&b!=null&&a.length>0&&b.length>0){this.n=bm(a,16);this.e=parseInt(b,16)}else alert("Invalid RSA publickey")}" 99 | this = self 100 | if a is not None and len(a) > 0 and len(b) > 0: 101 | pubkey_dict, t, s = encryptpk_fromstring(a,16) 102 | this.n = E(pubkey_dict, t, s) 103 | this.e = int(b,16) 104 | return this 105 | else: 106 | print "Invalid RSA publickey" 107 | return None 108 | 109 | 110 | def encrypt(self,a,**kwargs): 111 | global bb,bc,bd,be 112 | bb = kwargs['bb'] if kwargs.has_key('bb') else bb 113 | bc = kwargs['bc'] if kwargs.has_key('bc') else bc 114 | bd = kwargs['bd'] if kwargs.has_key('bd') else bd 115 | be = kwargs['be'] if kwargs.has_key('be') else be 116 | """var b = bp(a, this.n.bitLength() + 7 >> 3); 117 | if (b == null ) 118 | return null ; 119 | var c = this.doPublic(b); 120 | if (c == null ) 121 | return null ; 122 | var d = c.toString(16); 123 | return (d.length & 1) == 0 ? d : "0" + d 124 | """ 125 | def bp(a,b): 126 | if b < len(a) + 11: 127 | print "Message too long for RSA" 128 | return None 129 | c,e = [0] * b,len(a)-1 130 | while e>=0 and b>0: 131 | """var f = a.charCodeAt(e--);""" 132 | f = ord(a[e]) 133 | e -= 1 134 | if f < 128: 135 | """c[--b] = f;""" 136 | b -= 1 137 | c[b] = f 138 | elif f > 127 and f < 2048: 139 | """c[--b] = f & 63 | 128; 140 | c[--b] = f >> 6 | 192""" 141 | b -= 1 142 | c[b] = f & 63 | 128 143 | b -= 1 144 | c[b] = f >> 6 | 192 145 | else: 146 | """c[--b] = f & 63 | 128; 147 | c[--b] = f >> 6 & 63 | 128; 148 | c[--b] = f >> 12 | 224""" 149 | b -= 1 150 | c[b] = f & 63 | 128 151 | b -= 1 152 | c[b] = f >> 6 & 63 | 128 153 | b -= 1 154 | c[b] = f >> 12 | 224 155 | #end of the loop 156 | b -= 1 157 | c[b] = 0 158 | g,h = Z(),[0] 159 | while b > 2: 160 | h[0] = 0 161 | while h[0] == 0: 162 | nextbytes(h) 163 | b -= 1 164 | c[b] = h[0] 165 | b -= 1 166 | c[b] = 2 167 | b -= 1 168 | c[b] = 0 169 | dict, t, s = encryptpk_fromstring(c,256) 170 | return E(dict, t, s) 171 | this = self 172 | b = bp(a, self.n.bit_length() + 7 >> 3) 173 | if b is None: 174 | return None 175 | c = this.doPublic(b) 176 | if c is None: 177 | return None 178 | d = c.toString(16) 179 | return d if (len(d) & 1) == 0 else "0"+d 180 | 181 | class E: 182 | def __init__(self, pubkey_dict=None, t=0, s=0): 183 | self.array = pubkey_dict 184 | self.t = t 185 | self.s = s 186 | 187 | def __getitem__(self, key): 188 | if type(key) == int and self.array is not None: 189 | return self.array[key] 190 | return None 191 | 192 | def __setitem__(self, key, value): 193 | if type(key) == int and self.array is not None: 194 | self.array[key] = value 195 | elif type(key) == int and self.array is None: 196 | self.array = {} 197 | self.array[key] = value 198 | else: 199 | raise Exception('an error occured in __setitem__ with key:%s and value:%s' % (key,value)) 200 | 201 | def toString(self,a): 202 | def n(i): 203 | str = "0123456789abcdefghijklmnopqrstuvwxyz" 204 | try: 205 | return str[i] 206 | except: 207 | return "" 208 | this = self 209 | if this.s < 0: 210 | return "-" + this.negate().toString(a) 211 | b = math.log(a,2) 212 | if b.is_integer() and int(b) in (1,2,3,4,5): 213 | b = int(b) 214 | c = (1 << b) - 1 215 | e = False 216 | f = "" 217 | g = this.t 218 | h = DB - g * DB % b 219 | d = None 220 | if g-1 > 0: 221 | g -= 1 222 | d = this[g] >> h 223 | if h < DB and d > 0: 224 | e = True 225 | f = n(d) 226 | while g >= 0: 227 | if h < b: 228 | """d = (this[g] & (1 << h) - 1) << b - h;""" 229 | """d |= this[--g] >> (h += this.DB - b)""" 230 | d = (this[g] & (1 << h) - 1) << b -h 231 | g -= 1 232 | h += DB -b 233 | d |= this[g] >> h 234 | else: 235 | """d = this[g] >> (h -= b) & c;""" 236 | h -= b 237 | d = this[g] >> h & c 238 | if h <= 0: 239 | h += DB 240 | g -= 1 241 | """d > 0 && (e = !0);e && (f += n(d))""" 242 | e = True if d > 0 else e 243 | f += n(d) if e else f 244 | return f if e else "0" 245 | 246 | def y(self,a): 247 | b,c=1,None 248 | c = a >> 16 249 | if c != 0: 250 | a = c 251 | b += 16 252 | c = a >> 8 253 | if c != 0: 254 | a = c 255 | b += 8 256 | c = a >> 4 257 | if c != 0: 258 | a = c 259 | b += 4 260 | c = a >> 2 261 | if c != 0: 262 | a = c 263 | b += 2 264 | c = a >> 1 265 | if c != 0: 266 | a = c 267 | b += 1 268 | return b 269 | 270 | def bit_length(self): 271 | return 0 if self.t <= 0 else DB * (self.t-1) + self.y(self[self.t-1] ^ self.s & DM) 272 | 273 | def abs(self): 274 | this = self 275 | return this.negate() if this.s < 0 else this 276 | 277 | def negate(self): 278 | a = E() 279 | E.ZERO.subTo(self,a) 280 | return a 281 | 282 | def subTo(self,a,b): 283 | this = self 284 | #a=>an instance of E,b=>another instance of E 285 | c,d,e = 0,0,min(a.t,this.t) 286 | while c < e: 287 | d += this[c] - a[c] 288 | b[c] = d & DM 289 | c += 1 290 | d >>= DB 291 | if a.t < this.t: 292 | d -= a.s 293 | while c < this.t: 294 | d += this[c] 295 | b[c] = d & DM 296 | c += 1 297 | d >>= DB 298 | d += this.s 299 | else: 300 | d += this.s 301 | while c < a.t: 302 | d -= a[c] 303 | b[c] = d & DM 304 | c += 1 305 | d >>= DB 306 | d -= a.s 307 | """ 308 | b.s = d < 0 ? -1 : 0; 309 | d < -1 ? b[c++] = this.DV + d : d > 0 && (b[c++] = d); 310 | b.t = c; 311 | b.clamp() 312 | """ 313 | b.s = -1 if d < 0 else 0 314 | if d < -1: 315 | b[c] = DV + d 316 | c += 1 317 | elif d > 0: 318 | b[c] = d 319 | c += 1 320 | b.t = c 321 | b.clamp() 322 | 323 | def clamp(self): 324 | this = self 325 | a = this.s & DM 326 | while this.t > 0 and this[this.t - 1] == a: 327 | this.t -= 1 328 | 329 | def copyTo(self,a): 330 | this = self 331 | for b in range(this.t - 1, -1, -1): 332 | a[b] = this[b] 333 | a.t = this.t 334 | a.s = this.s 335 | 336 | def squareTo(self,a): 337 | this = self 338 | b = this.abs() 339 | c = a.t = 2 * b.t 340 | while c-1 >= 0: 341 | c -= 1 342 | a[c] = 0 343 | for i in range(0, b.t-1): 344 | d = b.am(i, b[i], a, 2 * i, 0, 1) 345 | """if ((a[i + b.t] += b.am(i + 1, 2 * b[i], a, 2 * i + 1, d, b.t - i - 1)) >= b.DV) {""" 346 | a[i+b.t] += b.am(i+1, 2 * b[i], a, 2*i+1, d, b.t-i-1) 347 | if a[i+b.t] >= DV: 348 | """a[i + b.t] -= b.DV;a[i + b.t + 1] = 1""" 349 | a[i+b.t] -= DV 350 | a[i+b.t+1] = 1 351 | """a.t > 0 && (a[a.t - 1] += b.am(c, b[c], a, 2 * c, 0, 1));""" 352 | c = b.t - 1# c == 36 353 | if a.t > 0: 354 | a[a.t-1] += b.am(c, b[c], a, 2*c, 0, 1) 355 | a.s = 0 356 | a.clamp() 357 | 358 | def am(self,a, b, c, d, e, f): 359 | this = self 360 | g = b & 16383 361 | h = b >> 14 362 | while f-1 >= 0: 363 | f -= 1 364 | i,j = this[a] & 16383, this[a] >> 14 365 | k = h * i + j * g 366 | a += 1 367 | """i = g * i + ((k & 16383) << 14) + c[d] + e; 368 | e = (i >> 28) + (k >> 14) + h * j; 369 | c[d++] = i & 268435455 370 | """ 371 | i = g * i + ((k & 16383) << 14) + c[d] + e 372 | e = (i >> 28) + (k >> 14) + h * j 373 | c[d] = i & 268435455 374 | d += 1 375 | return e 376 | 377 | def multiplyTo(self,a,b): 378 | """ 379 | function F(a, b) { 380 | var c = this.abs(), 381 | e = a.abs(), 382 | f = c.t; 383 | b.t = f + e.t; 384 | while (--f >= 0) 385 | b[f] = 0; 386 | for (f = 0; f < e.t; ++f) 387 | b[f + c.t] = c.am(0, e[f], b, f, 0, c.t); 388 | b.s = 0; 389 | b.clamp(); 390 | this.s != a.s && d.ZERO.subTo(b, b) 391 | }""" 392 | this = self 393 | c,e = this.abs(),a.abs() 394 | f = c.t 395 | b.t = f + e.t 396 | while f-1 >= 0: 397 | f -= 1 398 | b[f] = 0 399 | for i in range(0,e.t): 400 | b[i + c.t] = c.am(0, e[i], b, i, 0, c.t) 401 | b.s = 0 402 | b.clamp() 403 | if this.s != a.s: 404 | E.ZERO.subTo(b,b) 405 | 406 | def mod(self,a): 407 | this = self 408 | b = E() 409 | this.abs().divRemTo(a, None, b) 410 | this.s < 0 and b.compareTo(E.ZERO) > 0 and a.subTo(b,b) 411 | 412 | def compareTo(self,a): 413 | this = self 414 | b = this.s - a.s 415 | if b != 0: 416 | return b 417 | c = this.t 418 | b = c - a.t 419 | if b != 0: 420 | return b 421 | while c-1 >= 0: 422 | c -= 1 423 | b = this[c] - a[c] 424 | if b != 0: 425 | return b 426 | return 0 427 | 428 | def divRemTo(self, a, b, c): 429 | this = self 430 | f = a.abs() 431 | if not f.t <= 0: 432 | g = this.abs() 433 | if g.t < f.t: 434 | b != None and b.fromInt(0) 435 | c != None and this.copyTo(c) 436 | return 437 | if c == None: 438 | c = E() 439 | h,i,j,k = E(), this.s, a.s, DB-self.y(f[f.t - 1]) 440 | if k > 0: 441 | f.lShiftTo(k, h) 442 | g.lShiftTo(k, c) 443 | else: 444 | f.copyTo(h) 445 | g.copyTo(c) 446 | l = h.t 447 | m = h[l - 1] 448 | if m == 0: 449 | return 450 | """var n = m * (1 << this.F1) + (l > 1 ? h[l - 2] >> this.F2 : 0), 451 | o = this.FV / n, 452 | p = (1 << this.F1) / n, 453 | q = 1 << this.F2, 454 | r = c.t, 455 | s = r - l, 456 | t = b == null ? e() : b;""" 457 | n = m * (1 << F1) + (h[l - 2] >> F2 if l > 1 else 0) 458 | o = FV / float(n) 459 | p = (1 << F1) / float(n) 460 | q = 1 << F2 461 | r = c.t 462 | s = r - l 463 | t = E() if b == None else b 464 | h.dlShiftTo(s, t) 465 | if c.compareTo(t) >= 0: 466 | c[c.t] = 1 467 | c.t += 1 468 | c.subTo(t, c) 469 | E.ONE.dlShiftTo(l, t) 470 | t.subTo(h, h) 471 | while h.t < l: 472 | h[h.t] = 0 473 | h.t += 1 474 | while s-1 >= 0: 475 | s -= 1 476 | """var u = c[--r] == m ? this.DM : Math.floor(c[r] * o + (c[r - 1] + q) * p);""" 477 | r -= 1 478 | u = DM if c[r] == m else int(c[r] * o + p * (c[r - 1] + q)) 479 | """if ((c[r] += h.am(0, u, c, s, 0, l)) < u) {""" 480 | c[r] += h.am(0, u, c, s, 0, l) 481 | if c[r] < u: 482 | """h.dlShiftTo(s, t);c.subTo(t, c);while (c[r] < --u)c.subTo(t, c)""" 483 | h.dlShiftTo(s,t) 484 | c.subTo(t,c) 485 | while c[r] < u - 1: 486 | u -= 1 487 | c.subTo(t,c) 488 | if b != None: 489 | c.drShiftTo(l, b) 490 | i != j and E.ZERO.subTo(b, b) 491 | """c.t = l;c.clamp();k > 0 && c.rShiftTo(k, c);i < 0 && d.ZERO.subTo(c, c)""" 492 | c.t = l 493 | c.clamp() 494 | k > 0 and c.rShiftTo(k, c) 495 | i < 0 and E.ZERO.subTo(c, c) 496 | 497 | def dlShiftTo(self, a, b): 498 | this = self 499 | for i in range(this.t - 1, -1, -1): 500 | b[i + a] = this[i] 501 | for j in range(a - 1, -1, -1): 502 | b[j] = 0 503 | b.t = this.t + a 504 | b.s = this.s 505 | 506 | def drShiftTo(self, a, b): 507 | this = self 508 | for i in range(a, this.t): 509 | b[i - a] = this[i] 510 | b.t = max(this.t - a, 0) 511 | b.s = this.s 512 | 513 | def lShiftTo(self, a, b): 514 | """ 515 | var c = a % this.DB, d = this.DB - c, e = (1 << d) - 1, f = Math.floor(a / this.DB), g = this.s << c & this.DM, h; 516 | for (h = this.t - 1; h >= 0; --h) { 517 | b[h + f + 1] = this[h] >> d | g; 518 | g = (this[h] & e) << c 519 | } 520 | for (h = f - 1; h >= 0; --h) 521 | b[h] = 0; 522 | b[f] = g; b.t = this.t + f + 1; b.s = this.s; b.clamp()""" 523 | this = self 524 | c = a % DB 525 | d = DB - c 526 | e = (1 << d) - 1 527 | f = int(a / DB) 528 | g = this.s << c & DM 529 | for i in range(this.t - 1, -1, -1): 530 | b[i + f + 1] = this[i] >> d | g 531 | g = (this[i] & e) << c 532 | for j in range(f - 1, -1, -1): 533 | b[j] = 0 534 | b[f] = g 535 | b.t = this.t + f + 1 536 | b.s = this.s 537 | b.clamp() 538 | 539 | def rShiftTo(self, a, b): 540 | """ 541 | function rShiftTo(a, b) { 542 | b.s = this.s; 543 | var c = Math.floor(a / this.DB); 544 | if (c >= this.t) b.t = 0; 545 | else { 546 | var d = a % this.DB, e = this.DB - d, f = (1 << d) - 1; 547 | b[0] = this[c] >> d; 548 | for (var g = c + 1; g < this.t; ++g) { 549 | b[g - c - 1] |= (this[g] & f) << e; 550 | b[g - c] = this[g] >> d 551 | } 552 | d > 0 && (b[this.t - c - 1] |= (this.s & f) << e); 553 | b.t = this.t - c; 554 | b.clamp() 555 | } 556 | } 557 | """ 558 | this = self 559 | b.s = this.s 560 | c = int(a / DB) 561 | if c >= this.t: 562 | b.t = 0 563 | else: 564 | d = a % DB 565 | e = DB - d 566 | f = (1 << d) - 1 567 | b[0] = this[c] >> d 568 | for g in range(c + 1, this.t): 569 | b[g - c - 1] |= (this[g] & f) << e 570 | b[g - c] = this[g] >> d 571 | if d > 0: 572 | b[this.t - c - 1] |= (this.s & f) << e 573 | b.t = this.t - c 574 | b.clamp() 575 | 576 | def fromInt(self,a): 577 | """this.t = 1; 578 | this.s = a < 0 ? -1 : 0; 579 | a > 0 ? this[0] = a : a < -1 ? this[0] = a + DV : this.t = 0""" 580 | this = self 581 | this.t = 1 582 | this.s = -1 if a < 0 else 0 583 | if a > 0: 584 | this[0] = a 585 | elif a < -1: 586 | this[0] = a + DV 587 | else: 588 | this.t = 0 589 | 590 | def exp(self,a,b): 591 | if a > 4294967295 or a < 1: 592 | return E.ONE 593 | c = E() 594 | f = E() 595 | g = b.convert(self) 596 | h = self.y(a) - 1 597 | g.copyTo(c) 598 | while h-1 >= 0: 599 | h -= 1 600 | b.sqrTo(c,f) 601 | if (a & 1 << h) > 0: 602 | b.mulTo(f, g, c) 603 | else: 604 | c,f = f,c 605 | return b.revert(c) 606 | 607 | def isEven(self): 608 | this = self 609 | return (this[0] & 1 if this.t > 0 else this.s) == 0 610 | 611 | def modPowInt(self,a,b): 612 | this = self 613 | if a < 256 or b.isEven(): 614 | c = J(b) 615 | else: 616 | c = Q(b) 617 | return this.exp(a,c) 618 | 619 | def invDigit(self): 620 | this = self 621 | if this.t < 1: 622 | return 0 623 | a = this[0] 624 | if (a & 1) == 0: 625 | return 0 626 | b = a & 3; 627 | b = b * (2 - (a & 15) * b) & 15 628 | b = b * (2 - (a & 255) * b) & 255 629 | b = b * (2 - ((a & 65535) * b & 65535)) & 65535 630 | b = b * (2 - a * b % DV) % DV 631 | return DV - b if b > 0 else -b 632 | 633 | def get_zero(self): 634 | self.s = 0 635 | self.t = 0 636 | self.array = None 637 | return self 638 | 639 | def get_one(self): 640 | self.s = 0 641 | self.t = 1 642 | self.array = {0:1} 643 | return self 644 | 645 | E.ZERO = E().get_zero() 646 | E.ONE = E().get_one() 647 | E.e = e 648 | 649 | class Q: 650 | def __init__(self, a): 651 | this = self 652 | this.m = a 653 | this.mp = a.invDigit() 654 | this.mpl = this.mp & 32767 655 | this.mph = this.mp >> 15 656 | this.um = (1 << DB - 15) - 1 657 | this.mt2 = 2 * a.t 658 | 659 | def convert(self,instance_E): 660 | """var b = e(); 661 | a.abs().dlShiftTo(this.m.t, b); 662 | b.divRemTo(this.m, null , b); 663 | a.s < 0 && b.compareTo(d.ZERO) > 0 && this.m.subTo(b, b); 664 | return b""" 665 | this = self 666 | b = E() 667 | instance_E.abs().dlShiftTo(this.m.t,b) 668 | b.divRemTo(this.m, None, b) 669 | if instance_E.s < 0 and b.compareTo(E.ZERO) > 0: 670 | this.instance_E.subTo(b, b) 671 | return b 672 | 673 | def revert(self,a): 674 | this = self 675 | b = E() 676 | a.copyTo(b) 677 | this.reduce(b) 678 | return b 679 | 680 | def reduce(self,a): 681 | """ 682 | while (a.t <= this.mt2) 683 | a[a.t++] = 0; 684 | for (var b = 0; b < this.m.t; ++b) { 685 | var c = a[b] & 32767, 686 | d = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & a.DM; 687 | c = b + this.m.t; 688 | a[c] += this.m.am(0, d, a, b, 0, this.m.t); 689 | while (a[c] >= a.DV) { 690 | a[c] -= a.DV; 691 | a[++c]++ 692 | } 693 | } 694 | a.clamp(); 695 | a.drShiftTo(this.m.t, a); 696 | a.compareTo(this.m) >= 0 && 697 | a.subTo(this.m, a) 698 | """ 699 | this = self 700 | while a.t <= this.mt2: 701 | a[a.t] = 0 702 | a.t += 1 703 | for b in range(0,this.m.t): 704 | c = a[b] & 32767 705 | d = c * this.mpl + ((c * this.mph + (a[b] >> 15) * this.mpl & this.um) << 15) & DM 706 | c = b + this.m.t 707 | a[c] += this.m.am(0, d, a, b, 0, this.m.t) 708 | while a[c] >= DV: 709 | a[c] -= DV 710 | c += 1 711 | a[c] += 1 712 | a.clamp() 713 | a.drShiftTo(this.m.t, a) 714 | if a.compareTo(this.m) >= 0: 715 | a.subTo(this.m, a) 716 | 717 | def mulTo(self, a, b, c): 718 | this = self 719 | a.multiplyTo(b, c) 720 | this.reduce(c) 721 | 722 | def sqrTo(self,a,b): 723 | this = self 724 | a.squareTo(b) 725 | this.reduce(b) 726 | 727 | class J: 728 | def __init__(self,instance_E): 729 | this = self 730 | this.m = instance_E 731 | 732 | def convert(self,a): 733 | """return a.s < 0 || a.compareTo(this.m) >= 0 ? a.mod(this.m) : a""" 734 | this = self 735 | return a.s < 0 or a.mod(this.m) if a.compareTo(this.m) >= 0 else a 736 | 737 | def revert(self,a): 738 | return a 739 | 740 | def reduce(self,a): 741 | this = self 742 | a.divRemTo(this.m, None, a) 743 | 744 | def mulTo(self, a, b, c): 745 | this = self 746 | a.multiplyTo(b,c) 747 | this.reduce(c) 748 | 749 | def sqrTo(self, a, b): 750 | this = self 751 | a.squareTo(b) 752 | this.reduce(b) 753 | 754 | class Z: 755 | def __init__(self): 756 | self.i = 0 757 | self.j = 0 758 | self.S = [] 759 | 760 | def init(self,bd): 761 | """var b, c, d; 762 | for (b = 0; b < 256; ++b) 763 | this.S[b] = b; 764 | c = 0; 765 | for (b = 0; b < 256; ++b) { 766 | c = c + this.S[b] + a[b % a.length] & 255; 767 | d = this.S[b]; 768 | this.S[b] = this.S[c]; 769 | this.S[c] = d 770 | } 771 | this.i = 0; 772 | this.j = 0""" 773 | c,d = 0,0 774 | for b in range(0,256): 775 | self.S.append(b) 776 | for b in range(0,256): 777 | c = c + self.S[b] + bd[b % len(bd)] & 255 778 | d = self.S[b] 779 | self.S[b] = self.S[c] 780 | self.S[c] = d 781 | self.i = 0 782 | self.j = 0 783 | 784 | def next(self): 785 | """ 786 | var a; 787 | this.i = this.i + 1 & 255; 788 | this.j = this.j + this.S[this.i] & 255; 789 | a = this.S[this.i]; 790 | this.S[this.i] = this.S[this.j]; 791 | this.S[this.j] = a; 792 | return this.S[a + this.S[this.i] & 255]""" 793 | self.i = self.i + 1 & 255 794 | self.j = self.j + self.S[self.i] & 255 795 | a = self.S[self.i] 796 | self.S[self.i] = self.S[self.j] 797 | self.S[self.j] = a 798 | return self.S[a + self.S[self.i] & 255] 799 | 800 | def main(): 801 | pubkey="EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443" 802 | str = '1449678890\tCYYZN5\n009000' 803 | instance_RSAKey = RSAKey() 804 | instance_RSAKey.setPublic(pubkey,'10001') 805 | """b = e.encrypt([me.servertime, me.nonce].join("\t") + "\n" + b)""" 806 | ret = instance_RSAKey.encrypt(str) 807 | print ret 808 | 809 | def nextbytes(array): 810 | global bc,be 811 | for b in range(0,len(array)): 812 | if bc is None: 813 | #get bc 814 | bg() 815 | bc = Z() 816 | bc.init(bd) 817 | for i in range(0, len(bd)): 818 | bd[i] = 0 819 | be = 0 820 | array[b] = bc.next() 821 | 822 | def encryptpk_fromstring(pubkey,bit=16): 823 | if pubkey is None: 824 | return (0,1,0) #ret,t,s 825 | import math 826 | c = math.log(bit,2) 827 | if c.is_integer() and c>=1 and c<=8: 828 | c = int(c) 829 | ret = {} 830 | t,s,g,e,f=0,0,0,len(pubkey),False 831 | while e-1 >= 0: 832 | e -= 1 833 | char,h = pubkey[e],0 834 | ischar = type(char) == str 835 | if c==8 and ischar: 836 | h = 0 837 | elif c==8 and not ischar: 838 | h = int(char) 839 | else: 840 | """ 841 | function o(a,b){var c=k[a.charCodeAt(b)];return c==null?-1:c} 842 | """ 843 | charcode = ord(char) 844 | if charcode>=48 and charcode<=57: 845 | h = charcode-48 846 | elif charcode>=65 and charcode<=90: 847 | h = charcode-55 848 | elif charcode>=97 and charcode<=122: 849 | h = charcode-87 850 | else: 851 | f = char=='-' 852 | e = e-1 853 | continue 854 | if g==0: 855 | ret[t] = h 856 | t = t+1 857 | elif (g+c) > DB: 858 | ret[t-1] |= (h & (1 << DB-g) - 1) << g 859 | ret[t] = h >> DB -g 860 | t = t+1 861 | else: 862 | ret[t-1] |= h << g 863 | g += c 864 | g = g - DB if g >= DB else g 865 | #end of the loop 866 | fl = ord(pubkey[0]) if type(pubkey[0]) == str else int(pubkey[0]) 867 | #fl should be in range(0,123),if fl & 128 !=0 the fl should between(128,256) 868 | if c==8 and (fl & 128) !=0: 869 | s = -1 870 | if g > 0: 871 | ret[t-1] |= (1 << DB -g) -1 << g 872 | a = s & DM 873 | while t>0 and ret[t-1] == a: 874 | t -= 1 875 | if f == True: 876 | """f && d.ZERO.subTo(this, this)""" 877 | """ 878 | //subTo function defination: 879 | function E(a, b) { 880 | var c = 0, 881 | d = 0, 882 | e = Math.min(a.t, this.t); 883 | while (c < e) { 884 | d += this[c] - a[c]; 885 | b[c++] = d & this.DM; 886 | d >>= this.DB 887 | } 888 | if (a.t < this.t) { 889 | d -= a.s; 890 | while (c < this.t) { 891 | d += this[c]; 892 | b[c++] = d & this.DM; 893 | d >>= this.DB 894 | } 895 | d += this.s 896 | } else { 897 | d += this.s; 898 | while (c < a.t) { 899 | d -= a[c]; 900 | b[c++] = d & this.DM; 901 | d >>= this.DB 902 | } 903 | d -= a.s 904 | } 905 | b.s = d < 0 ? -1 : 0; 906 | d < -1 ? b[c++] = this.DV + d : d > 0 && (b[c++] = d); 907 | b.t = c; 908 | b.clamp() 909 | } 910 | """ 911 | #TODO:not implemented! 912 | return None 913 | else: 914 | return (ret,t,s) 915 | else: 916 | return None 917 | 918 | if __name__ == '__main__': 919 | main() -------------------------------------------------------------------------------- /algorithm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rui7157/Daily-code/599952414be198b775433f53c93e1925c4840f42/algorithm/__init__.py -------------------------------------------------------------------------------- /algorithm/charu.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import seed 3 | import times 4 | """插入排序 5 | 从第一个元素开始,该元素可以认为已经被排序 6 | 取出下一个元素,在已经排序的元素序列中从后向前扫描 7 | 如果该元素(已排序)大于新元素,将该元素移到下一位置 8 | 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 9 | 将新元素插入到该位置后 10 | 重复步骤2~5 11 | """ 12 | numList=seed.getNum() 13 | @times.times 14 | def insertion(numList): 15 | newList=[numList[0]] 16 | print newList 17 | for index,i in enumerate(numList[1:]): 18 | for l in range(len(newList)): 19 | if newList[l]>i: 20 | newList.insert(l,i) 21 | break 22 | elif l==len(newList)-1: 23 | newList.append(i) 24 | return newList 25 | 26 | print insertion(numList) 27 | 28 | 29 | #2万数字排序用时:21.4830000401s -------------------------------------------------------------------------------- /algorithm/insert.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import times 3 | import seed 4 | numList=seed.getNum() 5 | 6 | @times.times 7 | def insert_sort(list): 8 | n = len(list) 9 | for i in range(1, n): 10 | # 后一个元素和前一个元素比较 11 | # 如果比前一个小 12 | if list[i] < list[i - 1]: 13 | # 将这个数取出 14 | temp = list[i] 15 | # 保存下标 16 | index = i 17 | # 从后往前依次比较每个元素 18 | for j in range(i - 1, -1, -1): 19 | # 和比取出元素大的元素交换 20 | if list[j] > temp: 21 | list[j + 1] = list[j] 22 | index = j 23 | else: 24 | break 25 | # 插入元素 26 | list[index] = temp 27 | return list 28 | 29 | 30 | print insert_sort(numList) -------------------------------------------------------------------------------- /algorithm/jishu.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import times 3 | import seed 4 | 5 | @times.times 6 | def count_sort(list): 7 | min = 2147483647 8 | max = 0 9 | # 取得最大值和最小值 10 | for x in list: 11 | if x < min: 12 | min = x 13 | if x > max: 14 | max = x 15 | # 创建数组C 16 | count = [0] * (max - min +1) 17 | for index in list: 18 | count[index - min] += 1 19 | index = 0 20 | # 填值 21 | for a in range(max - min+1): 22 | for c in range(count[a]): 23 | list[index] = a + min 24 | index += 1 25 | return list 26 | 27 | 28 | print count_sort(seed.getNum()) -------------------------------------------------------------------------------- /algorithm/maopao.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import seed 3 | import times 4 | """冒泡排序算法 5 | 冒泡排序算法的运作如下: 6 | 7 | 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 8 | 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 9 | 针对所有的元素重复以上的步骤,除了最后一个。 10 | 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 11 | 12 | """ 13 | 14 | num=seed.getNum() 15 | @times.times 16 | def bubble(list): 17 | listCount=len(list) 18 | for time in range(listCount): 19 | time=listCount-time 20 | for i in range(time-1): 21 | if list[i]>list[i+1]: 22 | list[i],list[i+1]=list[i+1],list[i] 23 | return list 24 | 25 | print bubble(num) 26 | 27 | #2万数字排序用时:49.1860001087s -------------------------------------------------------------------------------- /algorithm/seed.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | def getNum(count=20000): 4 | """return data type:list""" 5 | 6 | return [random.randint(0,10000) for n in range(count)] 7 | -------------------------------------------------------------------------------- /algorithm/times.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | def times(func): 4 | nowtime=time.time() 5 | def wrap(*args,**kw): 6 | result=func(*args,**kw) 7 | print "{}s".format(time.time()-nowtime) 8 | return result 9 | return wrap 10 | -------------------------------------------------------------------------------- /algorithm/xier.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import seed 3 | import times 4 | """希尔排序 5 | 每次以一定步长(就是跳过等距的数)进行排序,直至步长为1. 6 | """ 7 | numList=seed.getNum() 8 | @times.times 9 | def insertion(numList): 10 | newList=[numList[0]] 11 | print newList 12 | for index,i in enumerate(numList[1:]): 13 | for l in range(len(newList)): 14 | if newList[l]>i: 15 | newList.insert(l,i) 16 | break 17 | elif l==len(newList)-1: 18 | newList.append(i) 19 | return newList 20 | 21 | print insertion(numList) 22 | 23 | 24 | #2万数字排序用时:21.4830000401s -------------------------------------------------------------------------------- /algorithm/xuanze.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import seed 3 | import times 4 | """选择排序 5 | 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置, 6 | 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 7 | 重复第二步,直到所有元素均排序完毕。 8 | """ 9 | 10 | @times.times 11 | def selection(list): 12 | n=len(list) 13 | for i in range (0,n): 14 | min = i 15 | for j in range(i+1,n): 16 | if list[j].*?',response.body) 24 | for url in provinceUrlList: 25 | yield Request(url="http://www.a-hospital.com{}".format(url),callback=self.parse_item) 26 | 27 | 28 | def parse_item(self, response): 29 | i = HospitalItem() #http://www.a-hospital.com/w/%E5%9B%9B%E5%B7%9D%E7%9C%81%E5%8C%BB%E9%99%A2%E5%88%97%E8%A1%A8 30 | province=urllib.unquote(response.url[len("http://www.a-hospital.com/w/"):]) 31 | for name,content in re.findall(r'
  • (.*?).*?[\s\S]*?
      ([\s\S]*?)
    [\s\S]*?
  • ',response.body): 32 | i['hospitalName'] = name.decode('utf-8') 33 | content=content.decode("utf-8") 34 | hospitalAddress=re.findall(u"医院地址[:|:](.*?)",content) 35 | hospitalPhoneNumber= re.findall(u"联系电话[:|:](.*?)",content) 36 | hospitalLevel = re.findall(u"医院等级[:|:](.*?)",content) 37 | hospitalType=re.findall(u"经营方式[:|:](.*?)",content) 38 | hospitalFaxNumber=re.findall(u"传真号码[:|:](.*?)",content) 39 | hospitalEmail= re.findall(u"电子邮箱[:|:](.*?)",content) 40 | hospitalWebsite= re.findall(u'医院网站[:|:].*?',content) 41 | if hospitalAddress: 42 | i["hospitalAddress"]=hospitalAddress[0] 43 | if hospitalPhoneNumber: 44 | i['hospitalPhoneNumber']= hospitalPhoneNumber[0] 45 | if hospitalLevel: 46 | i['hospitalLevel']=hospitalLevel[0] 47 | if hospitalType: 48 | i['hospitalType']=hospitalType[0] 49 | if hospitalFaxNumber: 50 | i['hospitalFaxNumber']=hospitalFaxNumber[0] 51 | if hospitalEmail: 52 | i['hospitalEmail']=hospitalEmail[0] 53 | if hospitalWebsite: 54 | i['hospitalWebsite']=hospitalWebsite[0] 55 | i['hospitalProvince']=province.decode('utf-8') 56 | yield i -------------------------------------------------------------------------------- /hospital/scrapy.cfg: -------------------------------------------------------------------------------- 1 | # Automatically created by: scrapy startproject 2 | # 3 | # For more information about the [deploy] section see: 4 | # https://scrapyd.readthedocs.org/en/latest/deploy.html 5 | 6 | [settings] 7 | default = hospital.settings 8 | 9 | [deploy] 10 | #url = http://localhost:6800/ 11 | project = hospital 12 | -------------------------------------------------------------------------------- /news/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.6.0 2 | gevent==1.1.1 -------------------------------------------------------------------------------- /news/toutiao.py: -------------------------------------------------------------------------------- 1 | # -*- coding=utf-8 -*- 2 | 3 | import requests 4 | import re 5 | import datetime 6 | import json 7 | import os 8 | from gevent import monkey 9 | monkey.patch_all() 10 | import gevent 11 | 12 | TITLE_FILE = os.path.join(os.path.dirname(__file__), "title.txt") 13 | BODY_FILE = os.path.join(os.path.dirname(__file__), "body.txt") 14 | 15 | 16 | class News(object): 17 | # 热点新闻采集 18 | 19 | def __init__(self): 20 | self.article_count = 0 # 保存信息数量 21 | self.filter_word = [u"习近平"] # 敏感词 22 | 23 | def write_file(self, title, body): 24 | for f_word in self.filter_word: 25 | # 敏感词过滤 26 | if f_word.encode("gbk") in title or f_word.encode("gbk") in body: 27 | print u"已经过滤敏感词文章:{}".format(title.decode("gbk")) 28 | return 0 29 | with open(TITLE_FILE, "a") as t: 30 | t.write(title) 31 | with open(BODY_FILE, "a") as b: 32 | b.write(body.strip()+"\n") 33 | self.article_count += 1 34 | return 1 35 | 36 | def ifeng(self): 37 | # 凤凰新闻 38 | count = 0 39 | url = "http://news.ifeng.com/hotnews/" 40 | web = requests.get(url, timeout=15).content 41 | for content in re.findall(r'

    (.*?)

    ', web): 42 | web_body = requests.get(content[0], timeout=15).content 43 | try: 44 | body = re.compile(r"<.*?>").sub("", re.search( 45 | r"([.\s\S]*?)", web_body).group(1)) # 提取文章主体并过滤html标签 46 | except AttributeError, e: 47 | print u"跳过内容抓取:{}".format(content[1].decode("utf-8")).encode("gbk") 48 | continue 49 | if self.write_file(content[1].decode("utf-8").encode("gbk") + "\n", body.decode("utf-8").encode("gbk")): 50 | count += 1 51 | print u"成功采集ifeng%s条" % count 52 | 53 | def sina(self, datatype="news_", days=15): 54 | # 新浪新闻 55 | count = 0 56 | for day in range(1, days): 57 | curren_time = datetime.date.today() + datetime.timedelta(-day) 58 | url = "http://top.news.sina.com.cn/ws/GetTopDataList.php?top_type=day&top_cat=qbpdpl&top_time={nowtime}&top_show_num=100&top_order=DESC&js_var={datatype}".format( 59 | nowtime=curren_time.strftime('%Y%m%d'), datatype=datatype) 60 | js_retuen_val = requests.get(url, timeout=15).text 61 | for single_data in json.loads(re.findall("var news_ = (.*?);", js_retuen_val)[0]).get(u"data"): 62 | web_body = requests.get(single_data.get(u"url")).content 63 | print single_data.get(u"title").encode("gbk", "ignore") 64 | try: 65 | body = re.compile("<.*?>").sub("", re.search(r'id="artibody">([.\s\S]*?)', web_body).group( 66 | 1)).strip() 67 | except AttributeError: 68 | print u"跳过内容抓取:{}".format(single_data.get(u"title")) 69 | continue 70 | if self.write_file(single_data.get(u"title").encode("gbk", "ignore") + "\n", body.decode("utf-8").encode("gbk")): 71 | count += 1 72 | print u"成功采集sina%s条" % count 73 | 74 | def wy163(self): 75 | # 网易 76 | count = 0 77 | url = "http://news.163.com/rank/" 78 | web = requests.get(url, timeout=15).content 79 | for content in re.findall(r'[0-9]*?(.*?)', web): 80 | web_body = requests.get(content[0]).content 81 | try: 82 | body = re.compile(r"<.*?>").sub("", re.search(r'
    ([.\s\S]*?)
    ', web_body).group( 83 | 1)).replace(u"网易".encode("gbk"), u"本站".encode("gbk")) 84 | except AttributeError: 85 | print u"跳过内容抓取:{}".format(content[1].decode("gbk")) 86 | continue 87 | if self.write_file(content[1], body): 88 | count += 1 89 | print u"成功采集网易%s条" % count 90 | 91 | def sohu(self): 92 | # 搜狐 93 | count = 0 94 | new_types = ["news", "business", "yule", "sports", "fashion", "it"] 95 | url = "http://pinglun.sohu.com/{new_type}.html" 96 | for new_type in new_types: 97 | web = requests.get(url.format( 98 | new_type=new_type), timeout=15).content 99 | for content in re.findall(r'', web): 100 | web_body = requests.get(content[0]).content 101 | body = "" 102 | for p in re.findall(r"

    (.*?)

    ", web_body): 103 | if p: 104 | body = body + re.compile(r"<.*?>").sub("", p) 105 | if self.write_file(content[1].decode("utf-8").encode("gbk", "ignore") + "\n", body): 106 | count += 1 107 | print u"成功采集sohu%s条" % count 108 | 109 | def qq(self): 110 | # 腾讯新闻 111 | url = "http://roll.news.qq.com/" 112 | 113 | def mnw(self, page=20): 114 | # 闽南网 115 | """china"国内新闻,shehui":社会新闻,world:国际新闻,ent:娱乐新闻,tiyu:体育新闻,cj:财经新闻,digi:数码新闻 116 | """ 117 | count = 0 118 | new_types = ["china", "shehui", "world", "ent", "tiyu", "cj", "digi"] 119 | for new_type in new_types: 120 | for p in range(1, page): 121 | if p != 1: 122 | url = "http://www.mnw.cn/news/{new_type}/index-{p}.html".format( 123 | p=p, new_type=new_type) 124 | else: 125 | url = "http://www.mnw.cn/news/{new_type}/".format( 126 | new_type=new_type) 127 | web = requests.get(url, timeout=15).content 128 | for content in re.findall(r'
    ([^' % new_type, web): 129 | web_body = requests.get(content[0]).content 130 | try: 131 | body = re.compile(r"<.*?>").sub("", re.search(r'
    ([.\s\S]*?)
    ', web_body).group( 132 | 1)) 133 | except AttributeError: 134 | print u"跳过内容抓取:{}".format(content[1].decode("utf-8")) 135 | continue 136 | if self.write_file(content[1].decode("utf-8").encode("gbk", "ignore") + "\n", body.decode("utf-8").encode("gbk", "ignore")): 137 | count += 1 138 | print u"成功采集闽南网%s条" % count 139 | 140 | def cicnn(self, page=20): 141 | # 江汛网 142 | count = 0 143 | new_types = {"mil": "30", "world": "29", "wonders": "139"} 144 | for new_type, new_type_number in new_types.items(): 145 | for p in range(1, page): 146 | if p != 1: 147 | url = "http://www.cicnn.com/news/mil/list-{new_type_number}-{p}.html".format( 148 | p=p, new_type=new_type, new_type_number=new_type_number) 149 | else: 150 | url = "http://www.cicnn.com/news/{new_type}/".format( 151 | new_type=new_type) 152 | web = requests.get(url, timeout=30).content 153 | for content in re.findall(r'
    (.*?)' % new_type, web): 154 | web_body = requests.get(content[0]).content 155 | body = re.compile( 156 | r"<.*?>").sub("", re.search(r'
    ([.\s\S]*?)
    ', web_body).group(1)).replace(u"江汛网".encode("gbk"),u"本站".encode("gbk")) 157 | if self.write_file(content[1] + "\n", body): 158 | count += 1 159 | print u"成功采集cicnn%s条" % count 160 | 161 | def chinanews(self, page=10): 162 | # 中国新闻网 (滚动新闻最大10页) 163 | count = 0 164 | url = "http://www.chinanews.com/scroll-news/news{p}.html" 165 | for p in range(1, page): 166 | web = requests.get(url.format(p=p), timeout=30).content 167 | for content in re.findall(r'
    ', web): 168 | # print content[1], content[0] 169 | print content[0] 170 | web_body = requests.get(content[0]).content 171 | print web_body 172 | try: 173 | body = re.compile(r".*?|<.*?>").sub("", re.search( 174 | r'([.\s\S]*?)', web_body).group(1)) 175 | except AttributeError: 176 | print u"跳过内容抓取:{}".format(content[1].decode("gbk")) 177 | continue 178 | if self.write_file(content[1] + "\n", body): 179 | count += 1 180 | print u"成功采集chinanews %s条" % count 181 | 182 | 183 | if __name__ == "__main__": 184 | news = News() 185 | # news.chinanews() 186 | p = gevent.spawn 187 | gevent.joinall([gevent.spawn(news.ifeng), gevent.spawn(news.sina), gevent.spawn( 188 | news.wy163), gevent.spawn(news.mnw, 300), p(news.cicnn, 300), p(news.sohu)])#, p(news.chinanews) 189 | print u"采集完毕" 190 | -------------------------------------------------------------------------------- /proxyip/proxyip.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # @Date : 2016-05-17 17:29:31 4 | # @Author : NvRay (nvray@foxmail.com) 5 | 6 | import requests 7 | import re 8 | import os 9 | from gevent import monkey 10 | monkey.patch_socket() 11 | import gevent 12 | 13 | address = { 14 | "国内高匿": "nn", 15 | "国内高透": "nt", 16 | "国外高匿": "wn", 17 | "国外高透": "wt" 18 | } 19 | save_file = os.path.join(os.path.dirname(__file__), "proxyip.txt") 20 | 21 | requests = requests.session() 22 | 23 | 24 | class Proxy(object): 25 | def __init__(self, page, addr): 26 | self.page = page 27 | self.data = list() 28 | self.addr = address.get(addr) 29 | 30 | def web(self, page): 31 | headers = { 32 | "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0", 33 | "Host": "www.xicidaili.com", 34 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 35 | "Accept-Encoding": "gzip, deflate" 36 | } 37 | if page == 0: 38 | web = requests.get("http://www.xicidaili.com/nt", 39 | headers=headers,proxies={"HTTP":"101.21.100.106:8888"}).text 40 | else: 41 | web = requests.get("http://www.xicidaili.com/{addr}/{page}".format( 42 | page=page, addr=self.addr), headers=headers).text 43 | data = re.findall( 44 | r'[\s\S]*?(.*?)[\s\S]*?(.*?)[\s\S]*?">(.*?)', web) 45 | for info in data: 46 | self.data.append({ 47 | "ip": info[0], 48 | "port": info[1], 49 | "addr": info[2] 50 | }) 51 | 52 | def run(self): 53 | gevent.joinall([gevent.spawn(self.web, p) for p in range(self.page)]) 54 | return self.data 55 | 56 | if __name__ == '__main__': 57 | ip = Proxy(300, "国内高匿").run() 58 | 59 | ipdata=dict() 60 | for i in ip: 61 | with open(save_file, "a") as f: 62 | f.write(u"{ip} {port} {addr}\n".format(ip=i.get("ip"), 63 | port=i.get("port"), addr=i.get("addr")).encode("utf-8")) 64 | 65 | print u"ip:%s port:%s addr:%s" % (i.get("ip"), i.get("port"), i.get("addr")) 66 | -------------------------------------------------------------------------------- /proxyip/proxyip.txt: -------------------------------------------------------------------------------- 1 | 171.8.208.139 8888 河南郑州 2 | 171.38.199.29 8123 广西钦州 3 | 121.31.101.218 8123 广西防城港 4 | 182.90.79.189 8123 广西梧州 5 | 180.177.63.25 8090 广西钦州 6 | 121.31.49.235 8123 广西南宁 7 | 110.73.6.5 8123 广西防城港 8 | 222.160.13.162 8080 吉林四平 9 | 123.145.21.52 8118 重庆 10 | 171.39.81.129 8123 广西 11 | 171.39.37.39 8123 广西百色 12 | 171.37.135.97 8123 广西 13 | 171.39.88.254 8123 广西 14 | 219.155.43.182 3128 河南郑州 15 | 110.73.9.56 8123 广西防城港 16 | 27.187.248.227 8118 河北保定 17 | 106.36.193.143 80 江苏镇江 18 | 119.109.20.120 80 辽宁大连 19 | 110.73.29.40 8123 广西防城港 20 | 110.73.13.117 8123 广西防城港 21 | 121.31.103.146 8123 广西防城港 22 | 171.38.97.241 8123 广西玉林 23 | 27.17.247.36 8998 湖北武汉 24 | 110.72.6.38 8123 广西贵港 25 | 42.85.232.245 8888 辽宁 26 | 182.89.6.10 8123 广西柳州 27 | 110.72.44.198 8123 广西贵港 28 | 113.138.41.131 8888 陕西西安 29 | 39.68.166.21 8118 山东 30 | 110.72.30.135 8123 广西贵港 31 | 180.115.245.205 8888 江苏常州 32 | 113.73.150.132 8118 广东中山 33 | 182.88.30.252 8123 广西南宁 34 | 110.72.26.101 8123 广西贵港 35 | 27.45.148.253 8080 广东佛山 36 | 175.155.91.135 8888 四川德阳 37 | 113.251.217.44 8998 重庆 38 | 110.72.46.64 8123 广西贵港 39 | 113.103.92.248 8888 广东广州 40 | 121.31.157.169 8123 广西北海 41 | 121.31.85.59 8123 广西梧州 42 | 60.17.188.51 8080 辽宁鞍山 43 | 110.72.44.127 8123 广西贵港 44 | 110.73.8.164 8123 广西防城港 45 | 222.140.62.120 8888 河南 46 | 1.58.173.99 63000 黑龙江哈尔滨 47 | 110.72.42.251 8123 广西贵港 48 | 175.0.33.57 80 湖南长沙 49 | 110.73.2.25 8123 广西防城港 50 | 121.236.213.25 8888 江苏苏州 51 | 110.73.50.212 8123 广西南宁 52 | 121.31.49.213 8123 广西南宁 53 | 121.31.199.233 8123 广西桂林 54 | 182.88.30.8 8123 广西南宁 55 | 121.31.197.237 8123 广西北海 56 | 218.29.206.168 8080 河南郑州 57 | 110.73.192.226 8123 广西 58 | 110.72.27.43 8123 广西贵港 59 | 114.95.88.80 8118 上海 60 | 182.88.46.81 8123 广西南宁 61 | 171.38.101.33 8123 广西玉林 62 | 182.88.135.127 8123 广西南宁 63 | 112.87.210.158 8888 江苏 64 | 110.72.0.65 8123 广西贵港 65 | 110.72.16.104 8123 广西贵港 66 | 115.46.70.238 8123 广西南宁 67 | 110.72.40.227 8123 广西贵港 68 | 115.28.245.195 80 北京 69 | 182.88.228.239 8123 广西南宁 70 | 14.156.78.162 8888 广东东莞 71 | 110.73.7.25 8123 广西防城港 72 | 218.75.180.99 80 湖南岳阳 73 | 110.73.34.255 8123 广西防城港 74 | 121.42.11.53 80 河北石家庄 75 | 110.72.29.62 8123 广西贵港 76 | 222.75.151.22 63000 宁夏银川 77 | 110.72.35.10 8123 广西贵港 78 | 110.72.28.34 8123 广西贵港 79 | 182.89.7.6 8123 广西柳州 80 | 210.79.107.40 80 广东深圳市南山区 81 | 182.88.29.15 8123 广西南宁 82 | 114.254.211.169 8888 北京 83 | 182.88.167.239 8123 广西南宁 84 | 171.38.241.77 8123 广西钦州 85 | 110.73.51.154 8123 广西南宁 86 | 110.73.10.85 8123 广西防城港 87 | 116.226.84.222 8090 上海 88 | 183.141.68.205 3128 浙江嘉兴 89 | 110.73.13.53 8123 广西防城港 90 | 121.31.100.35 8123 广西防城港 91 | 182.88.206.231 8123 广西南宁 92 | 110.73.54.33 8123 广西南宁 93 | 121.31.103.35 8123 广西防城港 94 | 171.39.27.81 8123 广西百色 95 | 182.88.189.151 8123 广西南宁 96 | 121.31.109.170 8123 广西百色 97 | 182.88.31.158 8123 广西南宁 98 | 110.73.11.35 8123 广西防城港 99 | 110.73.6.227 8123 广西防城港 100 | 182.89.4.234 8123 广西柳州 101 | 121.31.192.215 8123 广西桂林 102 | 182.117.207.221 808 河南信阳 103 | 101.20.56.77 8998 河北廊坊 104 | 182.90.66.165 80 广西梧州 105 | 220.202.157.122 8123 湖南长沙 106 | 122.89.8.253 8118 江苏泰州 107 | 121.27.31.216 8080 河北邢台 108 | 112.87.36.248 8123 江苏宿迁市泗阳县 109 | 171.38.140.228 8998 广西钦州 110 | 117.22.112.197 80 陕西西安 111 | 125.123.231.95 808 浙江嘉兴 112 | 42.184.62.218 8888 黑龙江 113 | 121.31.93.193 80 广西梧州 114 | 110.73.4.211 8123 广西防城港 115 | 182.90.19.237 80 广西梧州 116 | 119.7.26.146 8118 四川宜宾 117 | 171.38.185.66 8123 广西钦州 118 | 182.90.70.135 80 广西梧州 119 | 222.242.155.124 3128 湖南郴州 120 | 106.88.187.207 8998 重庆 121 | 122.76.102.166 8118 内蒙古 122 | 49.73.164.113 3128 江苏苏州 123 | 182.90.21.172 80 广西梧州 124 | 115.229.39.0 8888 浙江嘉兴 125 | 49.64.40.4 3128 江苏苏州 126 | 113.247.94.111 8080 湖南长沙 127 | 183.22.49.115 8888 广东东莞 128 | 182.40.53.78 8090 山东青岛 129 | 182.88.27.118 8123 广西南宁 130 | 171.39.32.28 8123 广西百色 131 | 121.31.48.170 8123 广西南宁 132 | 219.159.49.2 80 内蒙古鄂尔多斯 133 | 114.218.43.0 3128 江苏苏州 134 | 36.250.197.78 8888 福建 135 | 171.39.39.120 8123 广西百色 136 | 110.73.35.85 8123 广西防城港 137 | 14.115.1.63 8118 广东中山 138 | 110.73.51.81 8123 广西南宁 139 | 116.226.146.91 63000 上海 140 | 27.190.126.227 8888 河北唐山 141 | 110.72.21.55 8123 广西贵港 142 | 182.88.162.182 8123 广西南宁 143 | 183.184.194.219 8090 山西太原 144 | 121.31.144.125 8123 广西北海 145 | 122.230.123.140 8090 浙江湖州市长兴县 146 | 171.39.26.219 8123 广西百色 147 | 121.31.49.76 8123 广西南宁 148 | 121.31.102.134 8123 广西防城港 149 | 182.88.231.25 8123 广西南宁 150 | 117.88.219.123 8118 江苏南京 151 | 124.234.159.61 8888 吉林长春 152 | 113.69.185.185 8118 广东佛山 153 | 110.72.16.55 8123 广西贵港 154 | 182.90.1.243 80 广西梧州 155 | 110.72.1.147 8123 广西贵港 156 | 60.186.201.39 8118 浙江杭州 157 | 118.75.160.216 8118 山西长治 158 | 118.80.0.108 8888 山西阳泉 159 | 27.210.56.38 8888 山东 160 | 182.202.169.212 8888 辽宁本溪 161 | 114.253.214.17 8118 北京 162 | 171.39.92.194 8118 广西 163 | 175.5.204.236 8888 湖南 164 | 115.227.194.152 3128 浙江嘉兴 165 | 117.83.196.177 8998 江苏苏州 166 | 124.234.224.235 8888 吉林长春 167 | 121.228.226.230 8118 江苏苏州 168 | 110.73.54.42 8123 广西南宁 169 | 115.228.106.236 3128 浙江嘉兴 170 | 60.194.100.51 80 北京 171 | 171.39.1.94 8998 广西百色 172 | 183.32.60.171 8888 广东中山 173 | 111.193.6.70 8888 北京 174 | 110.73.30.193 8123 广西防城港 175 | 119.6.121.68 808 四川成都 176 | 119.182.189.221 8888 山东淄博 177 | 115.159.44.22 80 河南郑州 178 | 118.77.234.71 8118 山西吕梁 179 | 119.29.177.223 80 北京 180 | 117.60.160.41 8888 江苏 181 | 119.29.223.34 80 北京 182 | 121.31.139.191 8123 广西北海 183 | 110.72.16.105 8123 广西贵港 184 | 171.38.164.113 8123 广西钦州 185 | 218.17.252.34 3128 广东深圳市宝安区 186 | 121.31.195.158 8123 广西桂林 187 | 113.78.85.206 8888 广东东莞 188 | 60.18.46.231 8888 辽宁抚顺 189 | 36.106.114.18 8118 浙江 190 | 42.122.142.134 8090 天津 191 | 222.93.189.54 3128 江苏苏州 192 | 182.88.231.216 8123 广西南宁 193 | 122.230.121.183 8090 浙江湖州 194 | 123.156.193.196 8888 浙江金华 195 | 110.72.39.190 8123 广西贵港 196 | 180.107.132.212 3128 江苏苏州 197 | 182.88.229.211 8123 广西南宁 198 | 117.63.65.214 8088 江苏常州 199 | 171.38.168.210 8123 广西钦州 200 | 171.37.135.147 8123 广西 201 | 182.90.33.56 8888 广西梧州 202 | 1.181.244.50 8888 内蒙古 203 | 113.238.238.72 8888 辽宁朝阳 204 | 119.4.163.227 80 四川成都 205 | 123.12.60.211 8888 河南新乡 206 | 114.66.7.140 8080 北京 207 | 113.231.23.207 8888 辽宁辽阳 208 | 123.169.238.33 8888 山东德州 209 | 58.242.196.80 8888 安徽合肥 210 | 175.25.25.134 8118 河北 211 | 115.219.7.7 8888 浙江温州 212 | 110.72.6.112 8123 广西贵港 213 | 116.26.172.61 8888 广东汕头 214 | 124.200.181.50 8118 北京 215 | 119.254.84.90 80 北京 216 | 112.102.221.220 8888 黑龙江哈尔滨 217 | 175.5.18.158 8888 湖南 218 | 113.56.114.31 8118 湖北 219 | 42.5.174.206 8080 辽宁 220 | 121.40.108.76 80 河北衡水 221 | 182.44.13.153 8888 山东 222 | 61.135.217.10 80 北京 223 | 221.0.124.237 8888 山东烟台 224 | 14.148.51.155 8888 广东汕头 225 | 183.13.126.130 8888 广东深圳 226 | 113.231.208.15 8888 辽宁抚顺 227 | 202.38.73.62 80 安徽合肥 228 | 61.135.217.7 80 北京 229 | 123.126.32.102 8080 北京 230 | 123.166.234.117 8888 黑龙江哈尔滨 231 | 112.102.130.16 8888 黑龙江哈尔滨 232 | 171.38.129.127 8123 广西钦州 233 | 115.192.58.24 8118 浙江杭州 234 | 113.89.161.234 8888 广东深圳 235 | 115.218.226.116 8888 浙江温州 236 | 27.115.75.114 8080 上海 237 | 112.65.88.122 8080 上海 238 | 122.227.56.138 8080 浙江金华 239 | 220.170.182.5 80 湖南株洲 240 | 61.135.217.13 80 北京 241 | 118.114.77.47 8080 四川成都 242 | 61.135.217.12 80 北京 243 | 122.96.59.107 843 江苏南京 244 | 124.200.96.226 8118 北京 245 | 119.52.59.202 8888 吉林松原 246 | 110.72.46.239 8123 广西贵港 247 | 121.40.117.155 8090 河北衡水 248 | 110.73.8.238 8123 广西防城港 249 | 221.226.67.202 8118 江苏南京 250 | 183.47.156.134 8888 广东广州 251 | 171.39.28.120 8123 广西百色 252 | 112.81.42.106 8118 江苏苏州 253 | 101.68.11.97 81 浙江杭州 254 | 110.72.29.149 8123 广西贵港 255 | 121.201.28.185 8088 广东佛山 256 | 121.31.140.131 8123 广西北海 257 | 182.88.30.193 8123 广西南宁 258 | 60.166.14.242 8080 安徽合肥 259 | 182.89.10.40 8123 广西柳州 260 | 60.176.38.178 8123 浙江杭州 261 | 14.121.247.91 8998 广东 262 | 110.73.7.104 8123 广西防城港 263 | 171.38.211.42 8123 广西钦州 264 | 182.90.50.55 8123 广西梧州 265 | 171.39.77.116 8123 广西百色 266 | 219.82.55.119 80 浙江杭州 267 | 59.55.210.173 8080 江西吉安 268 | 180.175.239.96 8118 上海 269 | 110.73.0.190 8123 广西防城港 270 | 110.73.31.165 8123 广西防城港 271 | 58.42.214.212 8888 贵州六盘水 272 | 110.72.19.147 8123 广西贵港 273 | 182.88.206.122 8123 广西南宁 274 | 121.31.193.221 8123 广西桂林 275 | 125.87.245.249 8998 重庆 276 | 171.39.24.253 8123 广西百色 277 | 42.203.245.140 8118 辽宁 278 | 60.17.240.23 8888 辽宁鞍山 279 | 171.38.130.82 8123 广西钦州 280 | 119.144.61.229 8118 广东东莞 281 | 175.151.206.107 808 辽宁阜新 282 | 171.38.158.76 8123 广西钦州 283 | 171.38.209.35 8123 广西钦州 284 | 118.171.157.150 8998 广西南宁 285 | 171.36.62.221 8123 广西南宁 286 | 110.73.7.209 8123 广西防城港 287 | 14.156.118.67 8888 广东东莞 288 | 222.81.61.29 808 新疆伊犁州伊宁 289 | 59.52.235.55 8080 江西南昌 290 | 182.88.103.212 8123 广西南宁 291 | 114.235.175.68 8888 江苏徐州 292 | 119.133.3.89 8888 广东江门 293 | 27.157.142.59 8118 福建 294 | 121.31.194.211 8123 广西桂林 295 | 121.31.197.84 8123 广西北海 296 | 122.76.103.69 8118 内蒙古 297 | 222.93.76.233 8123 江苏苏州 298 | 182.90.74.72 80 广西梧州 299 | 180.124.203.163 8888 江苏徐州 300 | 171.37.132.238 8123 广西 301 | 171.38.207.247 8123 广西钦州 302 | 59.78.160.248 8080 上海 303 | 112.253.2.61 8080 山东 304 | 183.140.80.36 3128 浙江嘉兴 305 | 182.88.160.255 8123 广西南宁 306 | 121.31.72.251 8123 广西梧州 307 | 171.37.163.160 8123 广西 308 | 171.38.170.133 8123 广西钦州 309 | 110.73.32.226 8123 广西防城港 310 | 171.38.162.252 8123 广西钦州 311 | 171.38.199.64 8123 广西钦州 312 | 123.165.15.124 8888 黑龙江哈尔滨 313 | 123.121.52.138 8118 北京 314 | 182.90.30.131 80 广西梧州 315 | 115.46.88.86 80 广西南宁 316 | 110.72.7.15 8123 广西贵港 317 | 110.73.28.95 8123 广西防城港 318 | 221.7.238.219 8123 广西贵港 319 | 121.31.75.167 8123 广西梧州 320 | 110.73.33.94 8123 广西防城港 321 | 171.34.191.11 8118 江西 322 | 171.39.1.171 8123 广西百色 323 | 182.88.179.70 8123 广西南宁 324 | 182.88.43.75 8123 广西南宁 325 | 121.31.193.183 8123 广西桂林 326 | 121.31.101.105 8123 广西防城港 327 | 110.73.1.80 8123 广西防城港 328 | 117.63.229.131 8088 江苏常州 329 | 182.89.6.254 8123 广西柳州 330 | 182.88.148.4 8123 广西南宁 331 | 182.88.28.8 8123 广西南宁 332 | 58.57.75.142 63000 山东潍坊 333 | 171.39.44.231 8123 广西百色 334 | 171.39.69.216 8123 广西百色 335 | 121.31.70.171 8123 广西梧州 336 | 121.228.189.73 8998 江苏苏州 337 | 118.80.174.83 8888 山西阳泉 338 | 110.73.30.37 8123 广西防城港 339 | 182.90.40.173 80 广西梧州 340 | 180.120.44.207 8888 江苏南通 341 | 121.31.100.254 8123 广西防城港 342 | 121.31.51.80 8123 广西南宁 343 | 182.88.204.27 8123 广西南宁 344 | 219.133.31.120 8888 广东深圳 345 | 182.90.51.164 8123 广西梧州 346 | 218.72.124.227 8118 浙江杭州 347 | 112.87.133.211 8118 江苏 348 | 110.73.33.215 8123 广西防城港 349 | 150.255.139.46 8090 海南 350 | 110.72.37.98 8123 广西贵港 351 | 121.40.117.155 8090 河北衡水 352 | 110.73.8.238 8123 广西防城港 353 | 221.226.67.202 8118 江苏南京 354 | 183.47.156.134 8888 广东广州 355 | 124.200.184.206 8118 北京 356 | 119.120.130.248 8888 广东中山 357 | 123.52.13.220 8888 河南郑州 358 | 182.36.167.121 8888 山东东营 359 | 112.102.248.249 8888 黑龙江哈尔滨 360 | 118.194.195.106 8080 北京 361 | 116.226.17.177 8118 上海 362 | 58.248.137.228 80 广东广州 363 | 182.112.219.224 8888 河南周口 364 | 180.110.61.220 8118 江苏南京 365 | 58.40.80.146 8118 上海 366 | 120.25.171.183 8080 北京 367 | 114.95.230.13 8118 上海 368 | 116.31.62.35 8118 广东 369 | 180.110.41.159 8118 江苏南京 370 | 220.249.21.222 8118 北京 371 | 14.155.151.165 8888 广东深圳 372 | 113.121.71.89 8888 山东 373 | 110.73.7.22 8123 广西防城港 374 | 222.95.223.235 3128 江苏南京 375 | 110.72.37.178 8123 广西贵港 376 | 119.179.114.28 8888 山东烟台 377 | 121.69.36.122 8118 吉林长春 378 | 218.59.71.70 8888 山东济南 379 | 223.240.86.121 8123 安徽合肥 380 | 182.88.253.178 8123 广西南宁 381 | 110.72.36.161 8123 广西贵港 382 | 110.72.254.167 8123 广西南宁 383 | 27.13.206.186 8888 重庆 384 | 222.39.64.13 8118 内蒙古呼伦贝尔 385 | 110.73.11.206 8123 广西防城港 386 | 123.166.231.71 8888 黑龙江哈尔滨 387 | 203.195.204.168 8080 广东深圳 388 | 123.132.199.161 8888 山东临沂 389 | 123.174.101.133 8888 山西长治 390 | 112.235.3.147 8888 山东济宁 391 | 39.65.197.155 8888 山东 392 | 180.125.36.177 8888 江苏淮安 393 | 59.34.203.25 8888 广东湛江 394 | 110.72.3.137 8123 广西贵港 395 | 115.49.104.154 80 河南南阳 396 | 113.206.115.130 80 重庆 397 | 182.89.4.240 8123 广西柳州 398 | 171.38.184.60 8123 广西钦州 399 | 36.100.154.205 80 浙江 400 | 110.73.10.254 8123 广西防城港 401 | 125.123.237.232 808 浙江嘉兴 402 | 121.9.118.93 8080 广东佛山 403 | 180.175.102.126 63000 上海 404 | 113.69.185.3 8118 广东佛山 405 | 49.113.106.4 8090 新疆 406 | 171.37.193.186 8123 广西 407 | 14.116.233.33 8888 广东珠海 408 | 182.90.23.39 80 广西梧州 409 | 221.214.221.148 3128 山东烟台市莱州 410 | 182.90.71.88 8123 广西梧州 411 | 14.118.181.201 8888 广东江门 412 | 113.206.184.108 80 重庆 413 | 121.229.165.104 8118 江苏南京 414 | 110.72.211.202 8123 广西柳州 415 | 110.72.33.22 8123 广西贵港 416 | 117.40.54.105 8080 江西南昌 417 | 171.36.146.83 8888 广西南宁 418 | 182.88.163.170 8123 广西南宁 419 | 182.88.252.56 8123 广西南宁 420 | 171.38.243.27 8123 广西钦州 421 | 119.139.169.75 8888 广东深圳 422 | 171.39.43.216 8123 广西百色 423 | 115.46.103.60 8123 广西南宁 424 | 182.90.33.191 80 广西梧州 425 | 113.205.219.178 80 重庆 426 | 27.42.209.254 8080 广东中山 427 | 124.165.98.53 8118 山西吕梁 428 | 125.89.240.13 8118 广东韶关 429 | 222.95.222.239 3128 江苏南京 430 | 115.159.152.171 80 河南郑州 431 | 113.243.221.191 3128 湖南 432 | 182.90.41.119 80 广西梧州 433 | 113.76.161.46 8118 广东珠海 434 | 182.90.38.99 80 广西梧州 435 | 27.12.99.129 8090 重庆 436 | 182.90.26.43 80 广西梧州 437 | 182.90.35.107 80 广西梧州 438 | 58.46.80.181 8888 湖南娄底 439 | 222.85.102.175 81 河南郑州 440 | 123.57.207.171 8888 广东广州 441 | 119.122.96.86 8090 广东深圳市龙岗区 442 | 183.141.76.68 3128 浙江嘉兴 443 | 182.90.42.97 80 广西梧州 444 | 219.139.211.226 808 湖北武汉 445 | 110.73.6.23 8123 广西防城港 446 | 182.42.38.206 8118 山东 447 | 182.89.4.6 8123 广西柳州 448 | 119.52.66.68 8090 吉林通化 449 | 114.245.141.56 8090 北京 450 | 113.139.113.195 80 陕西西安 451 | 113.140.205.233 808 陕西西安 452 | 115.28.247.165 80 北京 453 | 222.188.153.85 808 江苏常州 454 | 182.90.39.238 80 广西梧州 455 | 110.181.239.239 8888 山西大同 456 | 171.39.233.112 80 广西 457 | 182.90.35.223 80 广西梧州 458 | 182.90.60.139 80 广西梧州 459 | 60.168.51.62 3128 安徽合肥 460 | 219.159.48.109 80 内蒙古鄂尔多斯 461 | 27.28.80.84 3128 湖北 462 | 58.32.79.25 8118 上海 463 | 113.75.63.96 8888 广东河源 464 | 113.118.130.69 8888 广东深圳 465 | 182.254.240.147 8998 广东深圳 466 | 182.90.6.39 80 广西梧州 467 | 124.165.157.67 8888 山西吕梁 468 | 27.9.161.195 8090 重庆 469 | 110.73.48.86 8123 广西南宁 470 | 175.154.96.186 808 四川达州 471 | 115.200.85.68 8888 浙江杭州 472 | 171.37.132.34 8123 广西 473 | 110.73.2.154 8123 广西防城港 474 | 182.88.191.175 8123 广西南宁 475 | 121.31.137.145 8123 广西北海 476 | 121.31.71.51 80 广西梧州 477 | 171.38.199.69 8123 广西钦州 478 | 182.88.29.64 8123 广西南宁 479 | 112.239.13.146 808 山东枣庄 480 | 110.167.19.152 80 青海海南州 481 | 27.37.131.50 8118 广东东莞 482 | 182.90.55.216 80 广西梧州 483 | 183.68.218.111 8118 重庆 484 | 49.113.98.65 8090 新疆 485 | 182.90.36.76 80 广西梧州 486 | 110.72.26.226 8123 广西贵港 487 | 121.236.143.28 8888 江苏苏州 488 | 183.141.68.122 80 浙江嘉兴 489 | 119.96.239.208 8888 湖北武汉 490 | 182.90.54.153 80 广西梧州 491 | 122.232.38.61 808 浙江嘉兴 492 | 111.176.249.217 3128 湖北宜昌 493 | 110.73.3.220 8123 广西防城港 494 | 171.38.87.11 8123 广西玉林 495 | 140.255.137.88 8888 山东 496 | 182.90.36.75 80 广西梧州 497 | 110.73.8.93 8123 广西防城港 498 | 110.73.9.211 8123 广西防城港 499 | 182.90.11.30 80 广西梧州 500 | 182.90.74.245 80 广西梧州 501 | 113.121.151.228 80 山东 502 | 182.90.29.74 80 广西梧州 503 | 111.176.251.224 3128 湖北宜昌 504 | 123.160.165.35 81 河南郑州 505 | 14.148.219.251 8888 广东 506 | 182.88.4.96 8123 广西南宁 507 | 171.38.204.74 8123 广西钦州 508 | 58.22.17.76 8090 福建福州 509 | 110.72.1.173 8123 广西贵港 510 | 171.38.203.181 8123 广西钦州 511 | 27.191.69.86 8888 河北唐山 512 | 171.37.134.176 8123 广西 513 | 110.73.8.6 8123 广西防城港 514 | 110.73.34.71 8123 广西防城港 515 | 110.72.47.47 8123 广西贵港 516 | 110.72.22.48 8123 广西贵港 517 | 106.58.2.72 8998 云南 518 | 27.42.204.153 8080 广东中山 519 | 27.105.182.12 8888 浙江嘉兴 520 | 110.73.6.190 8123 广西防城港 521 | 115.226.45.132 8888 浙江绍兴 522 | 171.37.134.42 8123 广西 523 | 110.73.11.167 8123 广西防城港 524 | 110.73.8.86 8123 广西防城港 525 | 171.38.161.25 8123 广西钦州 526 | 113.247.94.105 8080 湖南长沙 527 | 49.159.168.192 8090 广西钦州 528 | 171.38.143.201 8123 广西钦州 529 | 117.81.197.151 8888 江苏苏州 530 | 171.37.132.119 8123 广西 531 | 42.48.23.220 8998 湖南长沙 532 | 175.154.229.250 8080 四川南充 533 | 14.123.2.152 8080 广东 534 | 111.182.243.97 3128 湖北 535 | 114.89.184.16 37381 上海 536 | 171.38.200.106 8123 广西钦州 537 | 171.38.199.127 8123 广西钦州 538 | 36.56.232.166 8998 安徽 539 | 171.37.170.163 8123 广西 540 | 171.39.79.216 8123 广西百色 541 | 114.218.142.179 8888 江苏苏州 542 | 115.46.67.221 8123 广西南宁 543 | 27.42.179.74 8080 广东中山 544 | 183.45.61.134 8888 广东珠海市香洲区 545 | 150.255.171.209 8090 海南 546 | 171.39.79.187 8123 广西百色 547 | 182.88.30.154 8123 广西南宁 548 | 182.110.156.211 8080 江西 549 | 171.39.45.138 8123 广西百色 550 | 113.89.175.150 8888 广东深圳 551 | 182.61.19.148 80 北京 552 | 182.90.56.25 8123 广西梧州 553 | 171.38.206.254 8123 广西钦州 554 | 110.72.22.31 8123 广西贵港 555 | 110.72.16.42 8123 广西贵港 556 | 110.72.37.53 8123 广西贵港 557 | 110.72.23.75 8123 广西贵港 558 | 110.72.45.231 8123 广西贵港 559 | 171.39.44.69 8123 广西百色 560 | 59.61.208.108 8118 福建泉州 561 | 171.38.40.4 8123 广西玉林 562 | 121.31.72.25 8123 广西梧州 563 | 182.90.25.67 80 广西梧州 564 | 182.88.88.168 8123 广西南宁 565 | 182.89.7.229 8123 广西柳州 566 | 221.203.143.103 8090 辽宁辽阳 567 | 123.165.192.120 8888 黑龙江哈尔滨 568 | 123.57.211.137 80 广东广州 569 | 115.159.55.21 80 河南郑州 570 | 116.52.49.163 8888 云南昆明 571 | 113.77.43.88 8888 广东东莞 572 | 110.73.54.75 8123 广西南宁 573 | 112.237.243.218 8080 山东烟台 574 | 115.46.65.251 8123 广西南宁 575 | 171.38.5.163 8123 广西玉林 576 | 115.46.71.76 8123 广西南宁 577 | 121.31.101.237 8123 广西防城港 578 | 123.64.230.26 80 广东 579 | 27.42.184.176 8080 广东中山 580 | 115.46.110.149 8123 广西南宁 581 | 110.72.19.239 8123 广西贵港 582 | 120.87.214.214 8080 广东中山 583 | 125.118.168.49 8888 浙江杭州 584 | 110.73.7.139 8123 广西防城港 585 | 42.100.8.142 8998 黑龙江 586 | 115.29.141.161 80 北京 587 | 113.239.0.210 8080 辽宁辽阳 588 | 49.85.145.51 8118 江苏泰州 589 | 123.170.213.221 8888 山东滨州 590 | 125.123.82.15 3128 浙江嘉兴 591 | 119.249.53.55 8998 河北保定 592 | 175.1.172.213 8888 湖南湘潭 593 | 180.212.110.228 8998 天津 594 | 49.75.6.67 8118 江苏苏州 595 | 106.2.118.220 80 北京 596 | 180.125.140.97 8888 江苏苏州 597 | 119.188.182.157 808 山东 598 | 183.49.141.132 8888 广东深圳 599 | 183.0.128.49 8888 广东广州 600 | 49.84.123.64 8118 江苏苏州 601 | 123.4.235.100 8888 河南驻马店 602 | 14.221.76.19 8888 广东东莞 603 | 113.245.106.227 8888 湖南株洲 604 | 119.29.223.138 80 北京 605 | 182.90.83.37 80 广西梧州 606 | 121.42.206.69 80 河北邯郸 607 | 223.243.252.114 8888 安徽阜阳 608 | 182.122.88.92 8888 河南平顶山 609 | 150.255.156.10 8090 海南 610 | 60.212.14.6 8888 山东烟台 611 | 36.45.131.176 80 陕西 612 | 111.193.7.158 8888 北京 613 | 182.89.7.102 8123 广西柳州 614 | 113.234.197.55 8998 辽宁大连 615 | 123.112.159.157 8118 北京 616 | 27.47.15.89 9999 广东广州 617 | 115.236.7.178 3128 浙江杭州 618 | 110.81.51.4 8888 福建泉州 619 | 106.2.86.91 80 北京 620 | 171.39.92.62 8123 广西 621 | 1.193.79.159 8888 河南郑州 622 | 121.31.89.196 8123 广西梧州 623 | 113.82.200.138 8118 广东汕尾 624 | 115.46.84.231 8123 广西南宁 625 | 110.73.4.99 8123 广西防城港 626 | 121.31.198.8 8123 广西桂林 627 | 171.38.177.87 8123 广西钦州 628 | 182.44.231.25 8888 山东 629 | 115.50.80.229 8998 河南洛阳 630 | 110.73.6.91 8123 广西防城港 631 | 36.97.193.60 8888 浙江 632 | 49.66.166.86 8118 江苏苏州 633 | 182.90.74.197 80 广西梧州 634 | 27.8.208.55 8080 重庆 635 | 116.52.187.140 8888 云南昆明市盘龙区 636 | 119.108.64.141 8888 辽宁沈阳 637 | 122.94.19.145 8118 福建三明 638 | 14.148.242.92 8888 广东 639 | 111.199.238.125 8118 北京 640 | 222.45.16.119 8118 江苏镇江 641 | 42.243.197.92 8888 云南 642 | 27.192.234.33 8888 山东潍坊 643 | 117.88.201.64 8118 江苏南京 644 | 121.31.197.219 8123 广西北海 645 | 121.31.109.91 8123 广西百色 646 | 1.193.83.219 8888 河南郑州 647 | 121.27.18.14 8080 河北邢台 648 | 121.60.169.194 8888 湖北 649 | 182.35.93.197 8888 山东泰安 650 | 110.73.4.224 8123 广西防城港 651 | 182.89.4.248 8123 广西柳州 652 | 110.73.8.249 8123 广西防城港 653 | 182.61.43.166 80 北京 654 | 113.195.228.105 8888 江西赣州 655 | 182.88.28.68 8123 广西南宁 656 | 171.38.219.15 8123 广西钦州 657 | 117.66.166.182 8888 安徽安庆 658 | 110.72.26.84 8123 广西贵港 659 | 180.106.178.30 8118 江苏苏州 660 | 123.55.31.148 8888 河南洛阳 661 | 59.111.73.53 80 广东深圳 662 | 114.216.196.120 8888 江苏苏州 663 | 182.88.230.7 8123 广西南宁 664 | 171.39.39.183 8123 广西百色 665 | 171.36.61.136 8123 广西南宁 666 | 110.73.36.193 8123 广西防城港 667 | 111.250.51.217 8888 广西南宁 668 | 119.29.254.17 80 北京 669 | 27.203.142.82 8888 山东威海 670 | 110.73.3.127 8123 广西防城港 671 | 121.31.92.168 80 广西梧州 672 | 110.73.10.195 8123 广西防城港 673 | 218.72.23.251 8118 浙江杭州 674 | 182.90.61.91 80 广西梧州 675 | 171.37.157.220 8123 广西 676 | 121.31.147.238 8123 广西北海 677 | 171.124.159.148 8118 山西 678 | 58.218.6.220 8118 江苏徐州 679 | 171.37.153.87 8123 广西 680 | 123.165.71.188 8888 黑龙江哈尔滨 681 | 182.88.88.50 8123 广西南宁 682 | 110.72.23.174 8123 广西贵港 683 | 119.182.10.253 8888 山东济宁 684 | 114.100.195.24 8888 安徽马鞍山 685 | 118.76.40.30 8998 山西晋中 686 | 183.160.15.45 8118 安徽合肥 687 | 221.124.35.245 8090 广东中山 688 | 116.52.49.223 8888 云南昆明 689 | 110.73.0.241 8123 广西防城港 690 | 116.226.10.27 8118 上海 691 | 182.87.139.21 8888 江西 692 | 1.65.207.53 8888 重庆 693 | 182.90.82.48 8123 广西梧州 694 | 180.105.226.212 8888 江苏苏州 695 | 171.38.90.234 8123 广西玉林 696 | 119.127.4.40 8888 广东佛山 697 | 119.250.142.33 8998 河北廊坊市广阳区 698 | 183.56.56.235 8888 广东潮州 699 | 110.72.4.231 8123 广西贵港 700 | 182.88.188.76 8123 广西南宁 701 | 110.73.0.208 8123 广西防城港 702 | 221.205.88.167 8090 山西太原 703 | 110.73.1.68 8123 广西防城港 704 | 171.38.154.106 8123 广西钦州 705 | 121.31.148.150 8123 广西北海 706 | 123.171.52.243 8118 山东聊城 707 | 110.72.26.125 8123 广西贵港 708 | 115.217.235.2 8998 浙江宁波 709 | 121.31.198.98 8123 广西桂林 710 | 139.227.73.20 3128 上海 711 | 110.73.48.241 8123 广西南宁 712 | 27.184.140.205 8090 河北石家庄 713 | 110.73.0.82 8123 广西防城港 714 | 27.13.206.55 80 重庆 715 | 110.88.14.76 8080 福建福州 716 | 171.37.165.224 8123 广西 717 | 110.73.48.21 8123 广西南宁 718 | 223.240.89.244 8123 安徽合肥 719 | 183.93.186.184 8090 湖北襄阳 720 | 59.111.84.79 80 广东深圳 721 | 39.84.73.24 8118 山东 722 | 140.246.98.224 8090 山东 723 | 115.46.90.34 8123 广西南宁 724 | 110.73.37.45 8123 广西防城港 725 | 110.73.52.103 8123 广西南宁 726 | 59.55.216.50 8080 江西吉安 727 | 182.88.28.61 8123 广西南宁 728 | 27.9.160.103 8090 重庆 729 | 121.31.73.205 8123 广西梧州 730 | 171.37.86.7 8888 广西南宁 731 | 182.88.228.138 8123 广西南宁 732 | 121.31.199.231 8123 广西桂林 733 | 182.88.134.159 8123 广西南宁 734 | 123.4.85.118 8888 河南开封 735 | 110.73.6.53 8123 广西防城港 736 | 171.38.27.21 8123 广西玉林 737 | 1.49.10.223 8080 贵州贵阳市云岩区 738 | 101.73.240.30 8080 河北 739 | 115.219.6.211 8888 浙江温州 740 | 110.72.25.250 8123 广西贵港 741 | 118.80.170.55 8888 山西阳泉 742 | 58.219.245.49 8998 江苏盐城 743 | 114.99.11.220 808 安徽安庆 744 | 116.4.218.131 8080 广东东莞 745 | 110.73.10.149 8123 广西防城港 746 | 171.39.93.156 8123 广西 747 | 171.37.171.132 8123 广西 748 | 182.90.111.90 8123 广西梧州 749 | 115.46.73.31 8123 广西南宁 750 | 182.88.99.190 8123 广西南宁 751 | 182.90.39.0 80 广西梧州 752 | 183.129.134.226 8080 浙江杭州 753 | 171.38.209.133 8123 广西钦州 754 | 49.77.214.106 8118 江苏 755 | 110.177.59.21 8888 山西太原 756 | 182.112.163.222 8888 河南周口 757 | 42.235.25.37 8888 河南 758 | 58.212.85.153 8118 江苏南京 759 | 121.69.33.158 8080 吉林长春 760 | 183.141.74.94 3128 浙江嘉兴 761 | 117.82.35.150 8888 江苏苏州 762 | 121.31.140.67 8123 广西北海 763 | 121.31.175.49 8123 广西北海 764 | 113.243.54.65 8080 湖南郴州 765 | 110.73.36.214 8123 广西防城港 766 | 171.38.208.106 8123 广西钦州 767 | 110.72.27.235 8123 广西贵港 768 | 180.111.205.3 8118 江苏南京 769 | 14.148.60.67 8888 广东汕头 770 | 171.39.6.231 8123 广西百色 771 | 58.212.208.71 3128 江苏南京 772 | 182.90.42.146 80 广西梧州 773 | 183.32.47.177 8888 广东中山 774 | 110.73.9.72 8123 广西防城港 775 | 119.133.18.39 8888 广东江门 776 | 171.39.234.197 80 广西 777 | 1.193.38.156 8888 河南郑州 778 | 114.95.88.4 8118 上海 779 | 124.230.201.5 8998 湖南邵阳 780 | 120.14.100.96 8080 河北邢台 781 | 110.72.2.165 8123 广西贵港 782 | 182.90.69.94 8123 广西梧州 783 | 101.81.25.177 8118 上海 784 | 183.141.72.64 3128 浙江嘉兴 785 | 49.84.205.240 8118 江苏苏州 786 | 114.216.137.97 8888 江苏苏州 787 | 119.144.123.33 8888 广东东莞 788 | 121.31.87.154 80 广西梧州 789 | 116.25.46.32 8888 广东深圳 790 | 182.90.66.79 80 广西梧州 791 | 117.82.109.56 8118 江苏苏州 792 | 123.131.235.65 8888 山东临沂 793 | 182.90.60.213 80 广西梧州 794 | 180.107.139.230 3128 江苏苏州 795 | 1.57.92.183 8888 黑龙江齐齐哈尔 796 | 182.88.29.147 8123 广西南宁 797 | 110.73.11.130 8123 广西防城港 798 | 110.72.37.246 8123 广西贵港 799 | 121.31.48.141 8123 广西南宁 800 | 171.38.64.13 8123 广西玉林 801 | 171.38.64.13 8123 广西玉林 802 | 113.235.22.118 80 辽宁大连 803 | 27.9.162.193 8090 重庆 804 | 1.193.81.179 8090 河南郑州 805 | 221.205.90.64 8090 山西太原 806 | 123.156.10.203 8888 浙江金华 807 | 118.255.123.104 3128 湖南长沙 808 | 110.73.7.198 8123 广西防城港 809 | 114.219.42.161 3128 江苏苏州 810 | 182.88.135.183 8123 广西南宁 811 | 120.42.124.177 8888 福建厦门 812 | 110.73.2.132 8123 广西防城港 813 | 113.76.162.87 8118 广东珠海 814 | 49.89.242.147 8118 江苏宿迁 815 | 219.155.226.185 8888 河南郑州 816 | 115.46.64.11 8123 广西南宁 817 | 222.140.125.186 8888 河南济源 818 | 180.106.11.54 8118 江苏苏州 819 | 120.86.201.40 8888 广东潮州 820 | 115.228.109.171 3128 浙江嘉兴 821 | 27.129.221.143 8888 河北 822 | 124.127.160.126 80 北京 823 | 183.49.117.11 8888 广东深圳 824 | 1.193.199.188 8888 河南洛阳 825 | 121.11.43.215 8888 广东汕头 826 | 171.38.99.4 8123 广西玉林 827 | 60.212.210.170 8888 山东威海 828 | 115.46.74.190 8123 广西南宁 829 | 27.184.63.217 8888 河北石家庄 830 | 123.4.177.17 8080 河南三门峡 831 | 42.48.106.220 8998 湖南怀化 832 | 123.162.202.20 8888 河南 833 | 121.31.199.180 8123 广西桂林 834 | 121.31.101.138 8123 广西防城港 835 | 110.73.61.219 8123 广西南宁 836 | 112.248.220.4 8998 山东枣庄 837 | 171.38.210.207 8123 广西钦州 838 | 171.38.185.52 8123 广西钦州 839 | 124.165.27.22 8118 山西吕梁 840 | 171.39.72.207 8123 广西百色 841 | 182.89.7.129 8123 广西柳州 842 | 122.247.83.226 8998 浙江宁波 843 | 110.73.7.99 8123 广西防城港 844 | 171.39.24.60 8123 广西百色 845 | 14.156.71.195 8888 广东东莞 846 | 121.31.144.200 8123 广西北海 847 | 121.31.102.250 8123 广西防城港 848 | 1.195.16.226 8888 河南新乡 849 | 113.89.14.180 8888 广东深圳 850 | 114.233.133.149 8888 江苏泰州 851 | 49.84.123.64 8118 江苏苏州 852 | 110.72.39.11 8123 广西贵港 853 | 182.87.70.112 8080 江西 854 | 121.31.77.48 8123 广西梧州 855 | 121.31.48.36 8123 广西南宁 856 | 171.38.219.182 8123 广西钦州 857 | 171.37.163.250 8123 广西 858 | 182.88.207.249 8123 广西南宁 859 | 123.89.122.131 80 广东 860 | 125.109.192.191 8888 浙江温州 861 | 110.73.0.211 8123 广西防城港 862 | 110.73.4.204 8123 广西防城港 863 | 175.16.93.64 8888 吉林 864 | 60.212.7.224 8888 山东烟台 865 | 221.225.137.60 3128 江苏苏州 866 | 110.73.4.231 8123 广西防城港 867 | 125.82.156.61 8118 重庆 868 | 121.229.146.18 8118 江苏南京 869 | 175.152.27.210 8080 四川成都 870 | 112.102.254.229 8888 黑龙江哈尔滨 871 | 218.109.141.183 8888 浙江杭州 872 | 123.171.131.135 8888 山东泰安 873 | 115.229.38.101 8888 浙江嘉兴 874 | 117.89.77.27 3128 江苏南京 875 | 171.39.134.78 8123 广西河池 876 | 121.69.35.174 8118 吉林长春 877 | 171.38.27.54 8123 广西玉林 878 | 183.31.152.68 8888 广东中山 879 | 182.88.41.47 8123 广西南宁 880 | 110.73.11.160 8123 广西防城港 881 | 182.88.189.49 8123 广西南宁 882 | 183.189.173.31 8888 山西 883 | 14.155.203.154 8888 广东深圳 884 | 110.73.1.179 8123 广西防城港 885 | 111.164.49.35 8118 天津 886 | 182.88.107.134 8123 广西南宁 887 | 110.73.1.211 8123 广西防城港 888 | 110.72.18.108 8123 广西贵港 889 | 110.72.35.204 8123 广西贵港 890 | 110.73.8.228 8123 广西防城港 891 | 110.73.38.251 8123 广西防城港 892 | 182.88.29.244 8123 广西南宁 893 | 110.73.5.0 8123 广西防城港 894 | 110.72.17.241 8123 广西贵港 895 | 182.89.6.139 8123 广西柳州 896 | 171.37.168.200 8123 广西 897 | 182.88.228.168 8123 广西南宁 898 | 110.73.9.193 8123 广西防城港 899 | 171.39.11.198 8123 广西百色 900 | 171.39.30.18 8123 广西百色 901 | 49.65.140.17 8998 江苏苏州 902 | 14.222.104.166 8118 广东东莞 903 | 121.201.24.248 8088 广东东莞 904 | 14.216.11.249 8998 广东东莞 905 | 123.156.199.42 8888 浙江金华 906 | 171.36.253.4 8123 广西南宁 907 | 123.166.246.62 8888 黑龙江哈尔滨 908 | 14.223.62.183 8080 广东佛山 909 | 117.95.200.199 8888 江苏宿迁 910 | 61.164.0.212 8080 浙江杭州 911 | 183.140.85.110 3128 浙江嘉兴 912 | 125.109.116.13 8888 浙江温州 913 | 171.37.134.3 8123 广西 914 | 61.131.158.143 8080 江西吉安 915 | 175.148.78.245 8998 辽宁葫芦岛 916 | 110.73.4.75 8123 广西防城港 917 | 171.38.94.18 8123 广西玉林 918 | 180.120.76.77 8118 江苏南通 919 | 182.88.29.144 8123 广西南宁 920 | 219.246.37.124 8998 甘肃兰州 921 | 180.175.16.228 8118 上海 922 | 113.139.19.106 8998 陕西西安 923 | 115.46.219.82 8123 广西玉林 924 | 183.140.86.58 3128 浙江嘉兴 925 | 171.38.198.169 8123 广西钦州 926 | 171.39.24.176 8118 广西百色 927 | 112.239.205.173 8888 山东聊城 928 | 113.84.156.134 8888 广东汕头 929 | 183.31.40.144 8888 广东惠州 930 | 183.32.75.91 8888 广东中山 931 | 222.220.179.139 8998 云南昭通 932 | 182.155.143.79 8123 广东 933 | 110.73.32.38 8123 广西防城港 934 | 171.37.134.22 8123 广西 935 | 123.156.197.155 8888 浙江金华 936 | 218.74.14.144 8118 浙江杭州市萧山区 937 | 182.90.22.127 80 广西梧州 938 | 122.96.245.218 81 江苏盐城 939 | 115.46.101.194 8123 广西南宁 940 | 182.90.40.190 80 广西梧州 941 | 220.175.0.139 8123 江西南昌 942 | 58.242.241.212 8888 安徽合肥 943 | 171.121.63.243 8118 山西 944 | 110.73.28.98 8123 广西防城港 945 | 182.90.37.247 80 广西梧州 946 | 163.204.192.137 8888 广东 947 | 183.56.89.163 8888 广东潮州 948 | 111.176.248.191 3128 湖北宜昌 949 | 171.37.134.210 8123 广西 950 | 1.181.224.181 8888 内蒙古 951 | 171.211.52.246 8998 四川德阳 952 | 171.38.145.160 8123 广西钦州 953 | 180.110.41.238 8118 江苏南京 954 | 123.163.180.132 8998 河南三门峡 955 | 110.72.6.128 8123 广西贵港 956 | 110.73.0.96 8123 广西防城港 957 | 36.6.49.0 8080 安徽 958 | 211.154.83.41 80 上海 959 | 182.88.230.86 8123 广西南宁 960 | 182.88.161.199 8123 广西南宁 961 | 115.210.23.210 8888 浙江金华 962 | 171.38.177.76 8123 广西钦州 963 | 221.228.135.134 8080 江苏无锡 964 | 110.72.35.159 8123 广西贵港 965 | 182.88.91.242 8123 广西南宁 966 | 110.73.31.48 8123 广西防城港 967 | 110.73.2.199 8123 广西防城港 968 | 183.12.207.30 8888 广东深圳 969 | 110.72.23.96 8123 广西贵港 970 | 61.232.254.39 3128 新疆乌鲁木齐 971 | 61.129.93.25 8080 上海 972 | 110.73.62.121 8123 广西南宁 973 | 112.102.2.53 8888 黑龙江哈尔滨 974 | 114.254.252.206 8888 北京 975 | 115.46.72.144 8123 广西南宁 976 | 171.38.212.208 8123 广西钦州 977 | 182.88.29.209 8123 广西南宁 978 | 171.38.67.241 8123 广西玉林 979 | 121.31.51.206 8123 广西南宁 980 | 183.56.90.123 8888 广东潮州 981 | 121.31.72.87 8123 广西梧州 982 | 171.39.82.130 8123 广西 983 | 121.31.195.108 8123 广西桂林 984 | 123.149.206.36 8888 河南郑州 985 | 182.90.37.199 80 广西梧州 986 | 182.88.230.151 8123 广西南宁 987 | 1.85.167.111 8118 陕西西安 988 | 112.102.189.207 8888 黑龙江哈尔滨 989 | 110.72.71.128 8123 广西贵港 990 | 175.5.233.219 8888 湖南 991 | 182.88.90.122 8123 广西南宁 992 | 171.39.44.228 8123 广西百色 993 | 171.39.31.224 8123 广西百色 994 | 113.140.243.171 8998 陕西西安 995 | 171.37.135.57 8123 广西 996 | 110.73.53.129 8123 广西南宁 997 | 171.39.96.173 8123 广西 998 | 36.226.247.8 8080 广西防城港 999 | 171.38.169.17 8123 广西钦州 1000 | 113.1.127.122 8888 黑龙江 1001 | 110.73.34.68 8123 广西防城港 1002 | 27.184.140.248 8090 河北石家庄 1003 | 115.150.224.50 8118 江西南昌 1004 | 222.137.128.172 3128 河南郑州 1005 | 60.178.158.55 8118 浙江宁波 1006 | 110.72.28.58 8123 广西贵港 1007 | 110.73.34.136 8123 广西防城港 1008 | 110.72.32.110 8123 广西贵港 1009 | 110.72.24.170 8123 广西贵港 1010 | 110.73.53.65 8123 广西南宁 1011 | 110.73.33.74 8123 广西防城港 1012 | 125.82.157.197 8118 重庆 1013 | 123.4.16.66 8118 河南濮阳 1014 | 110.73.38.36 8123 广西防城港 1015 | 110.72.43.171 8123 广西贵港 1016 | 14.107.103.32 8080 重庆 1017 | 110.73.8.55 8123 广西防城港 1018 | 110.73.4.190 8123 广西防城港 1019 | 113.117.221.90 8118 广东中山 1020 | 222.35.220.64 808 北京 1021 | 120.87.214.24 8080 广东中山 1022 | 110.73.36.242 8123 广西防城港 1023 | 182.88.206.214 8123 广西南宁 1024 | 113.243.221.249 3128 湖南 1025 | 183.157.138.223 8888 浙江杭州 1026 | 183.141.78.92 3128 浙江嘉兴 1027 | 118.255.61.103 3128 湖南长沙 1028 | 210.79.107.144 80 广东深圳市南山区 1029 | 182.90.74.229 80 广西梧州 1030 | 221.11.29.157 8088 陕西西安 1031 | 182.90.119.64 80 广西梧州 1032 | 182.90.23.156 80 广西梧州 1033 | 182.90.17.196 80 广西梧州 1034 | 14.106.78.40 8888 重庆 1035 | 182.90.41.32 80 广西梧州 1036 | 27.24.14.79 8118 湖北 1037 | 182.90.22.18 80 广西梧州 1038 | 14.214.198.207 8080 广东佛山 1039 | 182.90.21.145 80 广西梧州 1040 | 182.90.52.88 80 广西梧州 1041 | 171.36.254.158 8123 广西南宁 1042 | 115.227.194.166 3128 浙江嘉兴 1043 | 182.90.10.251 80 广西梧州 1044 | 182.90.37.240 80 广西梧州 1045 | 110.73.51.215 8123 广西南宁 1046 | 125.123.80.220 3128 浙江嘉兴 1047 | 119.126.77.247 8118 广东佛山 1048 | 182.88.30.157 8123 广西南宁 1049 | 110.73.1.138 8123 广西防城港 1050 | 121.31.92.129 80 广西梧州 1051 | 110.72.34.174 8123 广西贵港 1052 | 182.89.7.175 8123 广西柳州 1053 | 58.218.198.2 6666 江苏徐州 1054 | 110.73.15.30 8123 广西防城港 1055 | 182.89.5.183 8123 广西柳州 1056 | 182.89.4.165 8123 广西柳州 1057 | 59.56.87.17 80 福建福州 1058 | 182.90.13.79 80 广西梧州 1059 | 115.46.71.185 8123 广西南宁 1060 | 182.88.28.232 8123 广西南宁 1061 | 171.37.133.179 8123 广西 1062 | 112.74.114.229 80 广东佛山 1063 | 115.46.66.240 8123 广西南宁 1064 | 110.73.9.24 8123 广西防城港 1065 | 182.90.122.148 8123 广西梧州 1066 | 182.88.135.118 8123 广西南宁 1067 | 110.73.29.229 8123 广西防城港 1068 | 110.73.55.194 8123 广西南宁 1069 | 182.89.6.54 8123 广西柳州 1070 | 182.90.19.5 80 广西梧州 1071 | 110.216.36.220 8123 广西贵港 1072 | 150.255.140.38 8090 海南 1073 | 171.39.96.28 8123 广西 1074 | 110.73.15.135 8123 广西防城港 1075 | 121.31.51.154 8123 广西南宁 1076 | 171.38.98.231 8123 广西玉林 1077 | 222.139.136.165 80 河南新乡 1078 | 110.73.11.81 8123 广西防城港 1079 | 113.243.83.189 3128 湖南郴州 1080 | 60.184.203.59 8888 浙江丽水 1081 | 60.21.90.248 80 辽宁大连 1082 | 58.247.145.130 80 上海 1083 | 121.31.139.7 8123 广西北海 1084 | 110.73.11.14 8123 广西防城港 1085 | 125.89.243.35 18186 广东韶关 1086 | 182.88.214.137 8123 广西南宁 1087 | 171.39.233.82 80 广西 1088 | 115.28.19.70 80 北京 1089 | 110.72.38.98 8123 广西贵港 1090 | 110.72.0.143 8123 广西贵港 1091 | 42.2.215.12 80 浙江嘉兴 1092 | 183.157.188.58 80 浙江杭州 1093 | 171.37.162.22 8123 广西 1094 | 121.31.138.155 8123 广西北海 1095 | 182.90.31.241 80 广西梧州 1096 | 183.68.156.151 80 重庆 1097 | 110.72.35.53 8123 广西贵港 1098 | 106.32.185.143 80 广西 1099 | 171.38.76.34 8123 广西玉林 1100 | 182.90.29.42 80 广西梧州 1101 | 171.38.67.83 8123 广西玉林 1102 | 182.90.62.100 80 广西梧州 1103 | 182.90.26.239 80 广西梧州 1104 | 110.72.20.68 8123 广西贵港 1105 | 182.90.24.74 80 广西梧州 1106 | 182.90.34.22 80 广西梧州 1107 | 120.36.216.232 8090 福建厦门 1108 | 175.170.62.138 80 辽宁大连 1109 | 171.37.156.31 8123 广西 1110 | 183.22.130.239 8090 广东东莞 1111 | 121.31.148.58 8123 广西北海 1112 | 110.73.5.168 8123 广西防城港 1113 | 182.88.31.105 8123 广西南宁 1114 | 171.39.78.113 8123 广西百色 1115 | 119.123.133.150 8090 广东深圳 1116 | 110.72.18.161 8123 广西贵港 1117 | 125.123.86.114 3128 浙江嘉兴 1118 | 171.39.235.55 80 广西 1119 | 182.90.39.187 80 广西梧州 1120 | 110.73.7.42 8123 广西防城港 1121 | 113.68.87.72 8090 广东广州 1122 | 182.88.231.126 8123 广西南宁 1123 | 1.193.72.126 8090 河南郑州 1124 | 120.25.71.149 8080 北京 1125 | 182.89.4.22 8123 广西柳州 1126 | 183.68.135.104 80 重庆 1127 | 171.37.160.219 8123 广西 1128 | 182.90.26.213 80 广西梧州 1129 | 182.88.229.195 8123 广西南宁 1130 | 110.72.19.14 8123 广西贵港 1131 | 121.31.199.238 8123 广西桂林 1132 | 121.31.192.157 8123 广西桂林 1133 | 119.48.180.219 8090 吉林长春 1134 | 182.90.38.160 80 广西梧州 1135 | 115.46.69.89 8123 广西南宁 1136 | 182.89.7.56 8123 广西柳州 1137 | 110.73.37.213 8123 广西防城港 1138 | 27.156.94.17 80 福建福州 1139 | 60.161.21.140 8090 云南红河州 1140 | 171.39.232.42 80 广西 1141 | 182.90.25.151 80 广西梧州 1142 | 110.73.28.108 8123 广西防城港 1143 | 110.72.183.233 8123 广西柳州 1144 | 182.90.34.113 80 广西梧州 1145 | 27.42.160.86 8090 广东中山 1146 | 182.90.52.125 80 广西梧州 1147 | 121.31.192.108 8123 广西桂林 1148 | 150.255.172.127 8090 海南 1149 | 182.90.20.178 8090 广西梧州 1150 | 115.46.100.207 8123 广西南宁 1151 | 123.124.168.107 80 北京 1152 | 111.206.190.155 80 北京 1153 | 1.195.125.132 80 河南焦作 1154 | 59.58.162.141 888 福建莆田 1155 | 210.33.29.31 9000 浙江嘉兴 1156 | 123.124.168.117 80 北京 1157 | 219.141.225.117 80 北京 1158 | 219.141.225.108 80 北京 1159 | 180.213.92.17 8123 天津 1160 | 110.81.238.173 8089 福建泉州 1161 | 121.42.55.162 3128 河北邢台 1162 | 150.138.201.2 80 山东 1163 | 125.39.226.49 20000 天津 1164 | 60.161.60.28 8118 云南红河州 1165 | 183.63.14.107 808 广东珠海 1166 | 114.248.148.161 8118 北京 1167 | 58.221.59.210 63000 江苏南通 1168 | 27.17.149.95 8123 湖北武汉 1169 | 58.251.132.181 8888 广东深圳 1170 | 218.109.105.178 80 浙江杭州 1171 | 222.176.112.31 80 重庆 1172 | 36.47.30.4 80 陕西 1173 | 125.215.44.148 808 上海 1174 | 114.97.34.108 8118 安徽合肥 1175 | 58.251.210.238 8118 广东深圳 1176 | 27.38.137.12 8118 广东深圳 1177 | 203.201.37.77 80 广东深圳 1178 | 116.19.16.170 8118 广东揭阳 1179 | 60.19.190.26 80 辽宁鞍山 1180 | 60.19.240.204 80 辽宁鞍山 1181 | 222.173.252.10 9999 山东淄博 1182 | 120.55.197.11 3128 广东阳江 1183 | 58.252.2.5 8003 广东东莞 1184 | 27.42.238.157 9999 广东中山 1185 | 119.147.161.55 3128 广东广州 1186 | 121.69.38.146 80 吉林长春 1187 | 222.169.60.154 9999 吉林松原 1188 | 101.254.188.198 8080 北京 1189 | 123.56.28.196 8888 辽宁朝阳 1190 | 115.159.50.187 80 河南郑州 1191 | 58.250.186.158 8118 广东深圳 1192 | 114.55.35.64 3128 北京 1193 | 112.74.206.59 3128 广东佛山 1194 | 122.225.107.145 80 浙江湖州 1195 | 122.225.106.35 80 浙江湖州 1196 | 110.206.127.136 9797 湖南怀化 1197 | 150.138.142.242 8088 山东 1198 | 124.202.166.166 80 北京 1199 | 120.83.248.72 9797 广东珠海 1200 | 58.247.125.205 80 上海 1201 | 121.31.195.135 8123 广西桂林 1202 | 59.83.34.5 80 山东济南 1203 | 182.90.16.255 80 广西梧州 1204 | 182.40.60.112 8090 山东青岛 1205 | 117.65.32.107 8090 安徽蚌埠 1206 | 27.14.233.99 8090 重庆 1207 | 60.13.6.61 8090 甘肃兰州 1208 | 171.38.37.200 8123 广西玉林市博白县 1209 | 59.55.252.119 8090 江西吉安 1210 | 49.69.95.137 8090 江苏苏州 1211 | 49.118.247.214 8090 新疆 1212 | 183.11.185.124 8090 广东深圳 1213 | 182.90.4.69 80 广西梧州 1214 | 182.90.17.238 80 广西梧州 1215 | 182.90.74.143 80 广西梧州 1216 | 27.184.151.220 8090 河北石家庄 1217 | 223.215.47.47 8090 安徽 1218 | 14.154.185.39 8090 广东深圳 1219 | 110.72.43.191 8123 广西贵港 1220 | 150.255.164.15 8090 海南 1221 | 171.39.28.204 8123 广西百色 1222 | 182.90.20.145 80 广西梧州 1223 | 110.72.38.105 8123 广西贵港 1224 | 118.81.44.159 8090 山西太原 1225 | 110.72.32.230 8123 广西贵港 1226 | 121.31.69.177 8123 广西梧州 1227 | 118.81.67.199 8090 山西太原 1228 | 59.57.7.189 8090 福建泉州 1229 | 1.193.80.168 8090 河南郑州 1230 | 39.91.48.183 8090 山东 1231 | 182.90.6.162 80 广西梧州 1232 | 112.64.29.232 8090 上海 1233 | 110.73.7.221 8123 广西防城港 1234 | 110.72.18.88 8123 广西贵港 1235 | 125.92.119.41 8090 广东江门 1236 | 182.200.136.67 8090 辽宁 1237 | 121.228.183.1 3128 江苏苏州 1238 | 117.65.43.82 8090 安徽蚌埠 1239 | 182.90.73.40 80 广西梧州 1240 | 182.90.1.14 8123 广西梧州 1241 | 27.12.195.88 8090 重庆 1242 | 182.135.185.246 8090 四川乐山 1243 | 49.81.242.110 8090 江苏徐州 1244 | 121.31.192.92 8123 广西桂林 1245 | 110.72.19.41 8123 广西贵港 1246 | 175.152.209.11 8090 四川成都 1247 | 112.95.81.117 8090 广东深圳 1248 | 121.31.108.119 8123 广西百色 1249 | 171.39.8.73 8123 广西百色 1250 | 182.90.11.112 80 广西梧州 1251 | 110.73.0.138 8123 广西防城港 1252 | 171.39.34.136 8123 广西百色 1253 | 121.31.193.56 8123 广西桂林 1254 | 182.90.93.91 80 广西梧州 1255 | 61.157.96.80 1630 四川绵阳 1256 | 182.90.54.150 80 广西梧州 1257 | 182.90.40.177 80 广西梧州 1258 | 171.39.235.182 80 广西 1259 | 58.245.206.96 8090 吉林通化 1260 | 112.95.39.198 8090 广东深圳 1261 | 171.38.175.170 8123 广西钦州 1262 | 110.73.0.8 8123 广西防城港 1263 | 171.39.233.40 80 广西 1264 | 171.38.186.106 8123 广西钦州 1265 | 171.38.174.50 8123 广西钦州 1266 | 121.31.196.7 8123 广西桂林 1267 | 110.72.38.220 8123 广西贵港 1268 | 123.162.242.251 18186 河南 1269 | 121.31.194.193 8123 广西桂林 1270 | 202.155.242.186 3128 广西贵港 1271 | 182.88.28.28 8123 广西南宁 1272 | 118.81.249.128 8090 山西太原 1273 | 121.31.92.151 80 广西梧州 1274 | 182.90.72.39 80 广西梧州 1275 | 182.90.66.31 80 广西梧州 1276 | 124.114.62.22 80 陕西西安 1277 | 183.185.0.136 8090 山西太原 1278 | 115.46.69.22 8123 广西南宁 1279 | 110.73.34.180 8123 广西防城港 1280 | 182.90.61.59 80 广西梧州 1281 | 182.90.67.54 80 广西梧州 1282 | 182.90.119.173 80 广西梧州 1283 | 110.73.3.179 8123 广西防城港 1284 | 59.55.250.125 8090 江西吉安 1285 | 171.38.182.167 8123 广西钦州 1286 | 110.72.24.155 8123 广西贵港 1287 | 27.198.72.44 80 山东济宁 1288 | 182.90.67.99 80 广西梧州 1289 | 221.7.238.51 8123 广西贵港 1290 | 115.46.67.219 8123 广西南宁 1291 | 182.90.70.179 8123 广西梧州 1292 | 1.29.90.193 8080 内蒙古 1293 | 221.226.105.54 9090 江苏南京 1294 | 171.39.233.84 80 广西 1295 | 118.117.39.231 80 四川绵阳 1296 | 182.90.61.115 80 广西梧州 1297 | 121.31.198.178 8123 广西桂林 1298 | 113.80.133.231 8090 广东东莞 1299 | 183.68.248.72 8080 重庆 1300 | 122.226.224.242 63000 浙江金华 1301 | 171.37.163.147 8123 广西 1302 | 171.37.156.110 8123 广西 1303 | 121.31.50.233 8123 广西南宁 1304 | 124.112.204.244 8998 安徽宣城 1305 | 182.88.28.144 8123 广西南宁 1306 | 110.72.29.122 8123 广西贵港 1307 | 171.38.163.204 8123 广西钦州 1308 | 110.73.48.117 8123 广西南宁 1309 | 110.73.2.114 8123 广西防城港 1310 | 112.102.130.16 8888 黑龙江哈尔滨 1311 | 182.88.189.45 8123 广西南宁 1312 | 222.197.219.13 808 云南昆明 1313 | 182.90.53.77 80 广西梧州 1314 | 14.223.197.238 8080 广东佛山 1315 | 110.72.29.180 8123 广西贵港 1316 | 183.47.156.134 8888 广东广州 1317 | 171.39.220.2 8123 广西 1318 | 219.142.244.208 8090 北京 1319 | 27.42.188.250 8080 广东中山 1320 | 115.206.52.139 8888 浙江杭州 1321 | 60.169.78.218 808 安徽芜湖 1322 | 121.31.156.133 8123 广西北海 1323 | 171.38.90.95 8123 广西玉林 1324 | 182.88.42.221 8123 广西南宁 1325 | 60.18.164.46 63000 辽宁辽阳 1326 | 110.72.181.42 8123 广西柳州 1327 | 114.218.144.4 8998 江苏苏州 1328 | 121.31.51.41 8123 广西南宁 1329 | 120.1.243.75 8080 河北石家庄 1330 | 110.73.62.219 8123 广西南宁 1331 | 49.64.29.134 8118 江苏苏州 1332 | 221.7.163.238 8123 广西百色 1333 | 121.31.103.148 8123 广西防城港 1334 | 221.7.238.33 8123 广西贵港 1335 | 121.69.29.6 8118 吉林长春 1336 | 124.202.181.186 8118 北京 1337 | 110.73.6.163 8123 广西防城港 1338 | 42.203.251.40 8118 辽宁 1339 | 115.46.87.15 8123 广西南宁 1340 | 121.31.101.136 8123 广西防城港 1341 | 121.31.100.126 8123 广西防城港 1342 | 171.36.254.18 8123 广西南宁 1343 | 183.45.140.70 8888 广东中山 1344 | 60.18.25.214 8888 辽宁抚顺 1345 | 171.37.153.250 8123 广西 1346 | 121.31.195.123 8123 广西桂林 1347 | 117.81.40.212 8888 江苏苏州 1348 | 27.202.244.248 8888 山东济南 1349 | 171.37.165.13 8123 广西 1350 | 220.175.1.199 8123 江西南昌 1351 | 175.43.110.70 8888 福建泉州 1352 | 60.210.245.201 8888 山东潍坊 1353 | 14.115.34.50 8888 广东中山 1354 | 58.100.189.175 8888 浙江杭州 1355 | 183.47.158.129 8888 广东广州 1356 | 42.229.23.219 8888 河南 1357 | 117.60.38.155 8888 江苏扬州 1358 | 119.120.40.234 8998 广东中山 1359 | 120.86.206.109 8888 广东潮州 1360 | 182.90.3.208 80 广西梧州 1361 | 117.82.107.5 8888 江苏苏州 1362 | 123.156.194.206 8888 浙江金华 1363 | 113.118.130.151 8888 广东深圳 1364 | 182.88.228.16 8123 广西南宁 1365 | 115.219.7.7 8888 浙江温州 1366 | 183.140.87.36 3128 浙江嘉兴 1367 | 1.85.164.210 8118 陕西西安 1368 | 182.88.160.94 8123 广西南宁 1369 | 114.66.7.140 8080 北京 1370 | 61.232.254.39 3128 新疆乌鲁木齐 1371 | 171.38.163.66 8123 广西钦州 1372 | 121.31.147.157 8123 广西北海 1373 | 110.72.19.52 8123 广西贵港 1374 | 113.251.76.159 8998 重庆 1375 | 182.88.162.197 8123 广西南宁 1376 | 171.38.203.105 8123 广西钦州 1377 | 182.88.228.132 8123 广西南宁 1378 | 182.88.91.83 8123 广西南宁 1379 | 182.88.31.145 8123 广西南宁 1380 | 121.31.109.49 8123 广西百色 1381 | 175.20.129.108 8888 吉林 1382 | 171.39.0.142 8123 广西百色 1383 | 171.39.67.37 8123 广西百色 1384 | 182.90.56.229 8123 广西梧州 1385 | 58.247.30.222 8080 上海 1386 | 110.72.26.247 8123 广西贵港 1387 | 112.116.203.207 8998 云南昆明 1388 | 118.194.195.106 8080 北京 1389 | 110.72.17.128 8123 广西贵港 1390 | 121.31.199.133 8123 广西桂林 1391 | 171.38.202.205 8123 广西钦州 1392 | 121.31.149.53 8123 广西北海 1393 | 59.52.18.229 8123 江西南昌 1394 | 182.88.15.245 8123 广西南宁 1395 | 115.46.64.69 8123 广西南宁 1396 | 110.73.52.191 8123 广西南宁 1397 | 182.45.202.24 8888 山东 1398 | 121.228.188.147 8080 江苏苏州 1399 | 122.236.139.234 8888 浙江绍兴 1400 | 180.107.136.50 3128 江苏苏州 1401 | 125.40.122.17 8888 河南洛阳 1402 | 110.73.7.168 8123 广西防城港 1403 | 110.73.1.0 8123 广西防城港 1404 | 171.38.182.211 8123 广西钦州 1405 | 171.38.203.176 8123 广西钦州 1406 | 121.31.145.3 8123 广西北海 1407 | 14.115.51.112 8888 广东中山 1408 | 115.194.46.104 8118 浙江杭州 1409 | 115.58.9.178 8118 河南驻马店 1410 | 182.90.8.151 80 广西梧州 1411 | 171.39.99.27 8118 广西 1412 | 182.90.36.73 80 广西梧州 1413 | 182.90.4.67 80 广西梧州 1414 | 1.194.197.43 8888 河南安阳 1415 | 182.88.31.112 8123 广西南宁 1416 | 183.140.84.237 3128 浙江嘉兴 1417 | 171.38.7.221 8123 广西玉林市北流 1418 | 121.31.148.127 8123 广西北海 1419 | 182.90.14.198 80 广西梧州 1420 | 110.73.10.176 8123 广西防城港 1421 | 27.41.151.167 8118 广东汕头 1422 | 110.73.30.216 8123 广西防城港 1423 | 171.39.96.173 8123 广西 1424 | 36.226.247.8 8080 广西防城港 1425 | 171.38.169.17 8123 广西钦州 1426 | 113.1.127.122 8888 黑龙江 1427 | 113.121.151.228 80 山东 1428 | 182.90.29.74 80 广西梧州 1429 | 111.176.251.224 3128 湖北宜昌 1430 | 123.160.165.35 81 河南郑州 1431 | 14.148.219.251 8888 广东 1432 | 182.88.4.96 8123 广西南宁 1433 | 171.38.204.74 8123 广西钦州 1434 | 58.22.17.76 8090 福建福州 1435 | 110.72.1.173 8123 广西贵港 1436 | 171.38.203.181 8123 广西钦州 1437 | 27.191.69.86 8888 河北唐山 1438 | 171.37.134.176 8123 广西 1439 | 110.73.8.6 8123 广西防城港 1440 | 110.73.34.71 8123 广西防城港 1441 | 110.72.47.47 8123 广西贵港 1442 | 110.72.22.48 8123 广西贵港 1443 | 106.58.2.72 8998 云南 1444 | 27.42.204.153 8080 广东中山 1445 | 27.105.182.12 8888 浙江嘉兴 1446 | 110.73.6.190 8123 广西防城港 1447 | 115.226.45.132 8888 浙江绍兴 1448 | 171.37.134.42 8123 广西 1449 | 110.73.11.167 8123 广西防城港 1450 | 110.73.8.86 8123 广西防城港 1451 | 61.135.217.15 80 北京 1452 | 61.135.217.7 80 北京 1453 | 61.135.217.17 80 北京 1454 | 61.135.217.14 80 北京 1455 | 121.31.157.149 8123 广西北海 1456 | 1.205.48.22 8888 贵州遵义 1457 | 113.231.23.207 8888 辽宁辽阳 1458 | 61.135.217.12 80 北京 1459 | 121.31.150.86 8123 广西北海 1460 | 61.143.158.245 808 广东揭阳 1461 | 121.31.153.139 8123 广西北海 1462 | 115.213.96.99 8998 浙江宁波 1463 | 121.31.51.205 8123 广西南宁 1464 | 49.159.168.192 8090 福建福州 1465 | 110.72.37.216 8123 广西贵港 1466 | 222.39.64.13 8118 内蒙古呼伦贝尔 1467 | 121.31.48.62 8123 广西南宁 1468 | 180.108.161.197 8888 江苏 1469 | 120.87.199.170 8080 广东中山 1470 | 171.38.210.188 8998 广西钦州 1471 | 110.72.57.119 8123 广西贵港 1472 | 27.224.225.116 8998 甘肃兰州 1473 | 171.39.106.220 8123 广西 1474 | 182.89.6.87 8123 广西柳州 1475 | 42.237.219.65 8998 河南 1476 | 114.95.230.13 8118 上海 1477 | 171.110.30.111 8118 广西 1478 | 106.37.250.123 80 河南周口 1479 | 171.39.168.82 8080 广西河池 1480 | 116.3.156.75 8888 辽宁大连 1481 | 222.186.12.195 3080 江苏镇江 1482 | 183.10.220.37 8888 广东潮州 1483 | 113.56.114.31 8118 湖北 1484 | 112.65.88.122 8080 上海 1485 | 110.73.1.74 8123 广西防城港 1486 | 27.187.249.160 8118 河北保定 1487 | 14.123.203.90 8118 广东 1488 | 183.56.118.110 8888 广东潮州 1489 | 180.106.193.158 8888 江苏苏州 1490 | 120.42.124.19 8888 福建厦门 1491 | 121.31.148.155 8123 广西北海 1492 | 114.231.79.113 8888 江苏南通 1493 | 112.98.135.146 8118 黑龙江佳木斯 1494 | 110.73.130.131 8888 广西来宾 1495 | 140.240.181.121 8888 海南 1496 | 180.110.61.220 8118 江苏南京 1497 | 27.8.72.129 8998 重庆 1498 | 121.42.151.46 81 河北唐山 1499 | 42.122.54.89 8123 天津 1500 | 171.39.66.25 8123 广西百色 1501 | 223.240.89.244 8123 安徽合肥 1502 | 183.93.186.184 8090 湖北襄阳 1503 | 59.111.84.79 80 广东深圳 1504 | 39.84.73.24 8118 山东 1505 | 140.246.98.224 8090 山东 1506 | 115.46.90.34 8123 广西南宁 1507 | 110.73.37.45 8123 广西防城港 1508 | 110.73.52.103 8123 广西南宁 1509 | 59.55.216.50 8080 江西吉安 1510 | 182.88.28.61 8123 广西南宁 1511 | 27.9.160.103 8090 重庆 1512 | 121.31.73.205 8123 广西梧州 1513 | 171.37.86.7 8888 广西南宁 1514 | 182.88.228.138 8123 广西南宁 1515 | 121.31.199.231 8123 广西桂林 1516 | 182.88.134.159 8123 广西南宁 1517 | 123.4.85.118 8888 河南开封 1518 | 110.73.6.53 8123 广西防城港 1519 | 171.38.27.21 8123 广西玉林 1520 | 1.49.10.223 8080 贵州贵阳市云岩区 1521 | 101.73.240.30 8080 河北 1522 | 115.219.6.211 8888 浙江温州 1523 | 110.72.25.250 8123 广西贵港 1524 | 118.80.170.55 8888 山西阳泉 1525 | 58.219.245.49 8998 江苏盐城 1526 | 114.99.11.220 808 安徽安庆 1527 | 116.4.218.131 8080 广东东莞 1528 | 110.73.10.149 8123 广西防城港 1529 | 171.39.93.156 8123 广西 1530 | 171.37.171.132 8123 广西 1531 | 182.90.111.90 8123 广西梧州 1532 | 115.46.73.31 8123 广西南宁 1533 | 182.88.99.190 8123 广西南宁 1534 | 116.25.44.23 8888 广东深圳市宝安区 1535 | 153.101.0.97 8888 江苏 1536 | 183.19.178.207 8998 广东肇庆 1537 | 27.200.197.184 8080 山东滨州 1538 | 123.4.235.100 8888 河南驻马店 1539 | 14.221.76.19 8888 广东东莞 1540 | 113.245.106.227 8888 湖南株洲 1541 | 119.29.223.138 80 北京 1542 | 182.90.83.37 80 广西梧州 1543 | 121.42.206.69 80 河北邯郸 1544 | 223.243.252.114 8888 安徽阜阳 1545 | 182.122.88.92 8888 河南平顶山 1546 | 150.255.156.10 8090 海南 1547 | 60.212.14.6 8888 山东烟台 1548 | 36.45.131.176 80 陕西 1549 | 111.193.7.158 8888 北京 1550 | 182.89.7.102 8123 广西柳州 1551 | 1.196.224.52 8998 河南商丘 1552 | 123.206.57.144 80 广东东莞 1553 | 113.200.237.22 63000 陕西西安 1554 | 171.39.113.220 8118 广西 1555 | 14.151.10.140 8888 广东广州 1556 | 122.142.234.43 8888 吉林四平 1557 | 223.152.203.173 8080 湖南 1558 | 39.68.66.209 8118 山东 1559 | 182.203.108.140 8888 辽宁 1560 | 60.185.142.176 3128 浙江舟山 1561 | 42.88.229.194 8998 甘肃 1562 | 182.90.5.127 80 广西梧州 1563 | 27.23.153.53 8118 湖北 1564 | 182.90.42.2 80 广西梧州 1565 | 182.90.30.186 80 广西梧州 1566 | 117.71.68.143 8118 安徽合肥 1567 | 182.90.24.8 80 广西梧州 1568 | 182.90.37.217 80 广西梧州 1569 | 175.162.75.126 8888 辽宁大连 1570 | 171.37.132.221 8123 广西 1571 | 171.38.161.75 8123 广西钦州 1572 | 182.90.52.37 80 广西梧州 1573 | 49.77.66.169 8118 江苏 1574 | 120.70.133.49 808 新疆 1575 | 175.153.25.166 8888 四川 1576 | 122.94.168.61 8118 江苏 1577 | 123.52.5.149 8090 河南郑州 1578 | 124.115.156.188 8888 陕西西安 1579 | 180.123.43.247 8888 江苏徐州 1580 | 182.88.230.223 8123 广西南宁 1581 | 61.137.147.220 8888 辽宁沈阳 1582 | 112.65.88.91 8080 上海 1583 | 171.38.189.84 8123 广西钦州 1584 | 27.222.57.28 8118 山东济南 1585 | 14.216.1.53 8888 广东东莞 1586 | 182.90.42.174 80 广西梧州 1587 | 36.106.210.245 8090 浙江 1588 | 113.68.90.180 8090 广东广州 1589 | 114.232.156.193 808 江苏南通 1590 | 222.242.153.187 3128 湖南郴州 1591 | 182.90.55.148 80 广西梧州 1592 | 113.243.39.61 80 湖南郴州 1593 | 121.31.199.243 8123 广西桂林 1594 | 123.175.39.114 8888 山西忻州 1595 | 110.73.4.107 8123 广西防城港 1596 | 123.158.114.204 8998 浙江嘉兴 1597 | 119.102.43.53 8118 湖北武汉 1598 | 182.88.128.81 8123 广西南宁 1599 | 117.22.112.197 80 陕西西安 1600 | 125.123.231.95 808 浙江嘉兴 1601 | 119.134.61.79 8888 广东茂名 1602 | 123.245.72.59 8888 辽宁沈阳 1603 | 39.68.167.106 8888 山东 1604 | 36.40.92.46 8888 陕西西安 1605 | 123.55.30.197 8888 河南洛阳 1606 | 1.197.178.111 8888 河南南阳 1607 | 115.50.48.245 8888 河南洛阳 1608 | 42.53.77.55 8888 辽宁 1609 | 218.106.205.145 8080 辽宁沈阳 1610 | 59.50.148.45 8888 海南海口 1611 | 121.29.169.3 8888 河北石家庄 1612 | 59.54.205.226 8888 江西九江 1613 | 120.24.38.29 8080 北京 1614 | 182.247.12.26 8888 云南 1615 | 180.175.1.1 8118 上海 1616 | 182.44.13.153 8888 山东 1617 | 119.183.34.246 8888 山东德州 1618 | 171.124.42.125 8888 山西 1619 | 219.159.12.12 8888 内蒙古呼和浩特 1620 | 122.7.189.235 8888 山东威海 1621 | 119.124.36.145 8888 广东惠州 1622 | 218.109.138.33 8888 浙江杭州 1623 | 123.173.68.154 8888 吉林长春 1624 | 14.148.205.129 8888 广东 1625 | 175.25.25.134 8118 河北 1626 | 112.102.5.200 8888 黑龙江哈尔滨 1627 | 117.63.246.163 8888 江苏常州 1628 | 180.115.124.95 8888 江苏常州 1629 | 116.226.17.177 8118 上海 1630 | 175.23.125.150 8888 吉林 1631 | 124.42.7.103 80 北京 1632 | 36.6.242.88 8888 安徽 1633 | 106.75.199.254 81 山东济南 1634 | 121.239.226.135 8118 江苏常州 1635 | 1.182.234.196 8888 内蒙古呼和浩特 1636 | 221.218.27.27 8888 北京 1637 | 112.235.3.147 8888 山东济宁 1638 | 113.231.79.40 8888 辽宁铁岭 1639 | 112.93.190.4 8118 广东东莞 1640 | 113.120.106.52 8888 山东济南 1641 | 36.101.81.106 8888 浙江 1642 | 113.77.28.33 8888 广东东莞 1643 | 27.218.252.22 8888 山东 1644 | 112.102.248.249 8888 黑龙江哈尔滨 1645 | 171.124.77.173 8888 山西 1646 | 123.13.152.44 8888 河南郑州 1647 | 101.81.16.95 8118 上海 1648 | 123.52.8.213 8888 河南郑州 1649 | 183.95.18.140 8888 湖北襄阳 1650 | 203.195.204.168 8080 广东深圳 1651 | 123.121.52.138 8118 北京 1652 | 182.90.30.131 80 广西梧州 1653 | 115.46.88.86 80 广西南宁 1654 | 110.72.7.15 8123 广西贵港 1655 | 110.73.28.95 8123 广西防城港 1656 | 221.7.238.219 8123 广西贵港 1657 | 121.31.75.167 8123 广西梧州 1658 | 110.73.33.94 8123 广西防城港 1659 | 171.34.191.11 8118 江西 1660 | 171.39.1.171 8123 广西百色 1661 | 182.88.179.70 8123 广西南宁 1662 | 182.88.43.75 8123 广西南宁 1663 | 121.31.193.183 8123 广西桂林 1664 | 121.31.101.105 8123 广西防城港 1665 | 110.73.1.80 8123 广西防城港 1666 | 117.63.229.131 8088 江苏常州 1667 | 182.89.6.254 8123 广西柳州 1668 | 182.88.148.4 8123 广西南宁 1669 | 182.88.28.8 8123 广西南宁 1670 | 58.57.75.142 63000 山东潍坊 1671 | 171.39.44.231 8123 广西百色 1672 | 171.39.69.216 8123 广西百色 1673 | 121.31.70.171 8123 广西梧州 1674 | 121.228.189.73 8998 江苏苏州 1675 | 118.80.174.83 8888 山西阳泉 1676 | 110.73.30.37 8123 广西防城港 1677 | 182.90.40.173 80 广西梧州 1678 | 180.120.44.207 8888 江苏南通 1679 | 121.31.100.254 8123 广西防城港 1680 | 121.31.51.80 8123 广西南宁 1681 | 182.88.204.27 8123 广西南宁 1682 | 115.46.154.140 8123 广西钦州 1683 | 106.40.122.230 80 浙江杭州 1684 | 223.13.97.111 8118 山西 1685 | 121.31.148.137 8123 广西北海 1686 | 171.39.42.27 8123 广西百色 1687 | 121.31.103.161 8123 广西防城港 1688 | 110.72.27.153 8123 广西贵港 1689 | 171.38.86.252 8123 广西玉林 1690 | 110.72.34.204 8123 广西贵港 1691 | 182.88.107.140 8123 广西南宁 1692 | 113.101.70.224 8888 广东 1693 | 182.90.8.87 80 广西梧州 1694 | 14.20.46.212 8118 广东深圳 1695 | 49.116.90.222 8998 新疆 1696 | 114.244.209.227 8118 北京 1697 | 171.39.45.237 8123 广西百色 1698 | 171.36.154.15 8123 广西南宁 1699 | 183.44.190.242 8118 广东湛江 1700 | 171.38.134.96 8123 广西钦州 1701 | 110.73.0.211 8123 广西防城港 1702 | 110.73.4.204 8123 广西防城港 1703 | 175.16.93.64 8888 吉林 1704 | 60.212.7.224 8888 山东烟台 1705 | 221.225.137.60 3128 江苏苏州 1706 | 110.73.4.231 8123 广西防城港 1707 | 125.82.156.61 8118 重庆 1708 | 175.5.149.234 8888 湖南 1709 | 118.77.10.45 8118 山西吕梁 1710 | 121.42.32.127 80 河北石家庄 1711 | 182.90.22.131 80 广西梧州 1712 | 182.90.75.50 80 广西梧州 1713 | 58.212.172.232 8118 江苏南京 1714 | 27.204.24.136 8998 山东莱芜 1715 | 110.231.227.143 8888 河北唐山 1716 | 171.38.27.54 8123 广西玉林 1717 | 183.31.152.68 8888 广东中山 1718 | 182.88.41.47 8123 广西南宁 1719 | 110.73.11.160 8123 广西防城港 1720 | 182.88.189.49 8123 广西南宁 1721 | 183.189.173.31 8888 山西 1722 | 14.155.203.154 8888 广东深圳 1723 | 110.73.1.179 8123 广西防城港 1724 | 111.164.49.35 8118 天津 1725 | 182.88.107.134 8123 广西南宁 1726 | 110.73.1.211 8123 广西防城港 1727 | 110.72.18.108 8123 广西贵港 1728 | 110.72.35.204 8123 广西贵港 1729 | 110.73.8.228 8123 广西防城港 1730 | 110.73.38.251 8123 广西防城港 1731 | 182.88.29.244 8123 广西南宁 1732 | 110.73.5.0 8123 广西防城港 1733 | 110.72.17.241 8123 广西贵港 1734 | 182.89.6.139 8123 广西柳州 1735 | 171.37.168.200 8123 广西 1736 | 182.88.228.168 8123 广西南宁 1737 | 110.73.9.193 8123 广西防城港 1738 | 171.39.11.198 8123 广西百色 1739 | 171.39.30.18 8123 广西百色 1740 | 110.73.50.212 8123 广西南宁 1741 | 121.31.49.213 8123 广西南宁 1742 | 121.31.199.233 8123 广西桂林 1743 | 110.72.34.162 8123 广西贵港 1744 | 171.39.82.248 8123 广西 1745 | 115.46.109.245 8123 广西南宁 1746 | 182.90.121.88 8123 广西梧州 1747 | 182.88.91.104 8123 广西南宁 1748 | 202.104.188.53 80 广东珠海 1749 | 121.31.159.228 8123 广西北海 1750 | 110.72.34.230 8123 广西贵港 1751 | 125.113.135.229 8888 浙江金华 1752 | 119.179.55.248 8888 山东烟台 1753 | 110.72.38.40 8123 广西贵港 1754 | 121.31.148.80 8123 广西北海 1755 | 171.39.24.30 8123 广西百色 1756 | 125.119.39.248 8118 浙江杭州 1757 | 110.73.48.234 8123 广西南宁 1758 | 183.166.195.209 8888 安徽亳州 1759 | 122.76.231.132 8888 内蒙古 1760 | 175.160.120.180 8888 辽宁沈阳 1761 | 58.212.0.116 8118 江苏南京 1762 | 153.101.1.167 8888 江苏 1763 | 112.239.176.110 8888 山东聊城 1764 | 182.88.206.205 8123 广西南宁 1765 | 171.122.246.116 80 山西运城 1766 | 180.127.84.102 8888 江苏连云港 1767 | 110.72.6.12 8123 广西贵港 1768 | 59.49.191.68 8888 海南陵水县 1769 | 113.103.218.230 8888 广东中山 1770 | 110.73.31.193 8123 广西防城港 1771 | 1.28.139.41 80 内蒙古 1772 | 113.225.213.169 80 辽宁沈阳 1773 | 114.217.86.200 3128 江苏苏州 1774 | 115.63.200.197 8118 河南焦作 1775 | 101.29.143.117 8080 河北 1776 | 182.124.65.49 8888 河南安阳 1777 | 110.73.3.39 8123 广西防城港 1778 | 27.13.49.138 8118 重庆 1779 | 110.72.44.236 8123 广西贵港 1780 | 112.237.71.115 8118 山东烟台 1781 | 106.111.163.242 8888 广东 1782 | 119.29.136.104 8888 北京 1783 | 180.105.15.204 8080 江苏苏州 1784 | 110.72.19.18 8123 广西贵港 1785 | 1.199.229.181 8888 河南新乡 1786 | 42.49.140.122 8123 湖南怀化 1787 | 42.102.144.218 8888 黑龙江 1788 | 120.27.5.104 80 北京 1789 | 122.193.57.88 8888 江苏苏州 1790 | 171.38.162.197 8123 广西钦州 1791 | 27.226.223.69 8888 甘肃 1792 | 171.116.140.247 80 山西太原 1793 | 14.125.62.79 8118 广东 1794 | 182.90.36.242 80 广西梧州 1795 | 27.13.31.226 80 重庆 1796 | 110.73.7.192 8123 广西防城港 1797 | 110.73.9.229 8123 广西防城港 1798 | 110.73.9.103 8123 广西防城港 1799 | 110.73.9.43 8123 广西防城港 1800 | 110.73.4.15 8123 广西防城港 1801 | 182.126.63.58 8888 河南 1802 | 111.164.68.35 8118 天津 1803 | 115.225.1.224 8998 浙江绍兴 1804 | 122.89.15.196 8118 江苏泰州 1805 | 114.232.155.180 808 江苏南通 1806 | 27.199.211.86 8888 山东 1807 | 222.139.194.63 80 河南南阳 1808 | 115.230.103.85 80 浙江杭州 1809 | 125.71.234.48 1337 四川成都 1810 | 182.90.119.124 80 广西梧州 1811 | 175.172.229.251 8888 辽宁 1812 | 123.171.189.171 80 山东泰安 1813 | 218.58.149.175 8118 山东烟台 1814 | 113.77.43.176 8118 广东东莞 1815 | 171.39.95.95 8123 广西 1816 | 59.33.178.116 8888 广东惠州 1817 | 183.11.249.151 8888 广东深圳 1818 | 218.57.116.186 8998 山东青岛 1819 | 222.39.195.42 8118 内蒙古通辽 1820 | 119.86.85.20 8118 重庆 1821 | 122.194.182.147 8888 江苏徐州 1822 | 49.81.168.84 8998 江苏徐州 1823 | 121.31.48.4 8123 广西南宁 1824 | 110.72.178.168 8123 广西柳州 1825 | 182.88.31.184 8123 广西南宁 1826 | 171.37.87.223 8123 广西南宁 1827 | 150.255.84.43 8090 海南 1828 | 115.236.243.38 8888 浙江杭州 1829 | 113.69.185.43 8118 广东佛山 1830 | 182.90.38.57 80 广西梧州 1831 | 114.216.44.64 3128 江苏苏州 1832 | 121.29.75.19 8118 河北石家庄 1833 | 175.44.187.193 808 福建三明 1834 | 117.44.221.140 8888 江西 1835 | 182.90.21.63 80 广西梧州 1836 | 182.90.7.5 80 广西梧州 1837 | 110.73.51.227 8123 广西南宁 1838 | 222.82.207.227 8090 新疆乌鲁木齐 1839 | 171.39.99.56 8888 广西 1840 | 182.90.61.103 80 广西梧州 1841 | 182.90.52.67 80 广西梧州 1842 | 121.31.93.91 80 广西梧州 1843 | 218.89.38.21 808 四川阿坝州 1844 | 219.142.158.44 8118 北京 1845 | 125.82.137.111 8118 重庆 1846 | 171.39.234.170 80 广西 1847 | 182.90.12.15 80 广西梧州 1848 | 182.90.79.115 80 广西梧州 1849 | 171.37.135.59 8123 广西 1850 | 115.221.116.217 8888 浙江温州 1851 | 110.73.10.240 8123 广西防城港 1852 | 114.216.216.188 8888 江苏苏州 1853 | 119.133.135.188 8888 广东江门 1854 | 175.5.255.218 8888 湖南 1855 | 171.37.134.92 8123 广西 1856 | 183.140.85.199 3128 浙江嘉兴 1857 | 182.88.229.226 8123 广西南宁 1858 | 121.31.49.250 8123 广西南宁 1859 | 183.140.82.135 3128 浙江嘉兴 1860 | 171.110.212.72 8998 广西 1861 | 110.73.51.53 8123 广西南宁 1862 | 182.88.29.22 8123 广西南宁 1863 | 171.38.188.205 8123 广西钦州 1864 | 121.31.49.158 8123 广西南宁 1865 | 113.243.196.36 8888 湖南 1866 | 117.64.81.64 8888 安徽合肥 1867 | 183.7.99.179 8888 广东汕头 1868 | 171.38.129.25 8123 广西钦州 1869 | 171.38.175.28 8123 广西钦州 1870 | 110.72.6.175 8123 广西贵港 1871 | 182.89.7.21 8123 广西柳州 1872 | 27.47.17.134 9999 广东广州 1873 | 182.88.229.189 8123 广西南宁 1874 | 110.73.8.243 8123 广西防城港 1875 | 182.88.31.80 8123 广西南宁 1876 | 182.88.29.117 8123 广西南宁 1877 | 121.31.103.51 8123 广西防城港 1878 | 14.148.46.91 8888 广东汕头 1879 | 171.37.165.56 8123 广西 1880 | 113.240.138.136 8998 湖南长沙 1881 | 58.212.108.95 3128 江苏南京 1882 | 115.28.168.111 80 北京 1883 | 119.177.188.92 8998 山东临沂 1884 | 182.89.6.195 8123 广西柳州 1885 | 59.78.160.246 8080 上海 1886 | 171.38.215.246 8123 广西钦州 1887 | 121.28.10.46 808 河北石家庄 1888 | 171.37.134.174 8123 广西 1889 | 110.72.19.87 8123 广西贵港 1890 | 115.46.69.121 8123 广西南宁 1891 | 171.38.201.69 8123 广西钦州 1892 | 112.195.73.130 8888 四川 1893 | 110.72.36.64 8123 广西贵港 1894 | 121.31.194.41 8123 广西桂林 1895 | 120.76.45.251 80 广东深圳 1896 | 182.88.135.195 8123 广西南宁 1897 | 182.90.70.15 8123 广西梧州 1898 | 61.129.93.25 8080 上海 1899 | 110.73.62.121 8123 广西南宁 1900 | 112.102.2.53 8888 黑龙江哈尔滨 1901 | 14.145.153.67 8118 广东广州 1902 | 60.187.17.5 8080 浙江绍兴 1903 | 123.77.19.14 8118 江苏 1904 | 182.90.78.180 80 广西梧州 1905 | 114.246.123.225 8118 北京 1906 | 122.94.14.38 8118 福建龙岩 1907 | 114.40.68.148 8080 天津 1908 | 182.90.63.47 80 广西梧州 1909 | 171.37.132.43 8123 广西 1910 | 58.244.122.189 8888 吉林长春 1911 | 182.90.119.189 80 广西梧州 1912 | 182.89.7.188 8123 广西柳州 1913 | 119.4.142.70 8888 四川成都 1914 | 182.90.56.170 8123 广西梧州 1915 | 171.39.235.137 80 广西 1916 | 121.42.30.159 80 河北石家庄 1917 | 116.52.49.210 8888 云南昆明 1918 | 222.91.188.105 80 陕西西安 1919 | 14.148.239.172 8888 广东 1920 | 171.39.95.242 8123 广西 1921 | 182.90.5.125 80 广西梧州 1922 | 106.2.116.233 80 北京 1923 | 112.237.86.133 8118 山东烟台 1924 | 58.214.196.240 8118 江苏无锡 1925 | 125.109.75.104 8888 浙江温州 1926 | 113.128.128.161 808 山东济南 1927 | 113.122.208.202 8888 山东临沂 1928 | 182.90.19.227 80 广西梧州 1929 | 171.39.9.242 8123 广西百色 1930 | 144.12.158.6 8888 山东 1931 | 111.182.241.110 3128 湖北 1932 | 115.28.170.197 80 北京 1933 | 27.206.117.142 80 山东 1934 | 171.36.252.32 8123 广西南宁 1935 | 171.39.80.176 8123 广西 1936 | 121.31.162.20 8123 广西北海 1937 | 113.243.38.150 8080 湖南郴州 1938 | 123.121.130.76 8118 北京 1939 | 113.85.118.178 9999 广东潮州 1940 | 110.72.27.45 8123 广西贵港 1941 | 182.90.24.210 80 广西梧州 1942 | 58.212.236.134 8118 江苏南京 1943 | 221.219.221.46 8118 北京 1944 | 113.85.120.236 9999 广东潮州 1945 | 122.157.180.17 8118 黑龙江齐齐哈尔 1946 | 122.89.1.215 8118 江苏泰州 1947 | 49.64.41.175 3128 江苏苏州 1948 | 182.90.25.116 80 广西梧州 1949 | 139.129.5.109 80 北京 1950 | 121.230.187.45 8888 江苏泰州 1951 | 113.234.197.55 8998 辽宁大连 1952 | 123.112.159.157 8118 北京 1953 | 27.47.15.89 9999 广东广州 1954 | 115.236.7.178 3128 浙江杭州 1955 | 110.81.51.4 8888 福建泉州 1956 | 106.2.86.91 80 北京 1957 | 171.39.92.62 8123 广西 1958 | 1.193.79.159 8888 河南郑州 1959 | 121.31.89.196 8123 广西梧州 1960 | 113.82.200.138 8118 广东汕尾 1961 | 115.46.84.231 8123 广西南宁 1962 | 110.73.4.99 8123 广西防城港 1963 | 121.31.198.8 8123 广西桂林 1964 | 171.38.177.87 8123 广西钦州 1965 | 182.44.231.25 8888 山东 1966 | 115.50.80.229 8998 河南洛阳 1967 | 110.73.6.91 8123 广西防城港 1968 | 36.97.193.60 8888 浙江 1969 | 49.66.166.86 8118 江苏苏州 1970 | 182.90.74.197 80 广西梧州 1971 | 27.8.208.55 8080 重庆 1972 | 116.52.187.140 8888 云南昆明市盘龙区 1973 | 119.108.64.141 8888 辽宁沈阳 1974 | 122.94.19.145 8118 福建三明 1975 | 14.148.242.92 8888 广东 1976 | 111.199.238.125 8118 北京 1977 | 222.45.16.119 8118 江苏镇江 1978 | 42.243.197.92 8888 云南 1979 | 27.192.234.33 8888 山东潍坊 1980 | 117.88.201.64 8118 江苏南京 1981 | 121.31.197.219 8123 广西北海 1982 | 121.31.109.91 8123 广西百色 1983 | 1.193.83.219 8888 河南郑州 1984 | 121.27.18.14 8080 河北邢台 1985 | 121.60.169.194 8888 湖北 1986 | 182.35.93.197 8888 山东泰安 1987 | 110.73.4.224 8123 广西防城港 1988 | 121.229.146.129 8118 江苏南京 1989 | 116.234.110.57 37380 上海 1990 | 116.27.91.165 8888 广东江门 1991 | 182.90.32.200 80 广西梧州 1992 | 182.88.28.201 8123 广西南宁 1993 | 14.115.3.96 8118 广东中山 1994 | 123.206.80.96 80 广西梧州 1995 | 182.90.4.134 80 广西梧州 1996 | 110.102.54.248 8118 内蒙古 1997 | 110.73.0.189 8123 广西防城港 1998 | 119.96.75.108 8888 湖北武汉 1999 | 14.148.6.192 8888 广东汕头 2000 | 222.160.9.227 8080 吉林四平 2001 | 182.88.228.31 8123 广西南宁 2002 | 118.80.36.142 8888 山西阳泉 2003 | 121.31.158.115 8123 广西北海 2004 | 121.31.103.86 8123 广西防城港 2005 | 115.218.66.213 8888 浙江温州 2006 | 115.46.91.177 8123 广西南宁 2007 | 116.52.93.109 8888 云南昆明 2008 | 183.184.161.163 8888 山西太原 2009 | 171.38.34.46 8123 广西玉林 2010 | 182.89.5.74 8123 广西柳州 2011 | 219.133.231.120 8888 广东深圳市福田区 2012 | 123.134.247.39 8080 山东莱芜 2013 | 183.145.244.132 8888 浙江绍兴 2014 | 110.73.11.210 8123 广西防城港 2015 | 110.73.0.198 8123 广西防城港 2016 | 182.90.6.28 80 广西梧州 2017 | 125.36.189.54 8888 天津 2018 | 27.42.207.37 8080 广东中山 2019 | 221.7.201.98 8123 广西百色 2020 | 112.104.139.76 80 广西梧州 2021 | 182.90.105.127 8123 广西梧州 2022 | 171.38.164.192 8123 广西钦州 2023 | 115.159.150.148 8888 河南郑州 2024 | 182.89.0.5 8123 广西柳州 2025 | 116.25.47.36 8888 广东深圳 2026 | 183.14.145.190 8888 广东深圳 2027 | 101.21.102.33 8888 河北邢台 2028 | 113.69.185.194 8118 广东佛山 2029 | 115.46.90.138 8123 广西南宁 2030 | 171.39.12.131 8123 广西百色 2031 | 183.140.87.210 3128 浙江嘉兴 2032 | 171.38.149.24 8123 广西钦州 2033 | 114.239.151.51 8888 江苏宿迁市泗阳县 2034 | 222.45.16.3 8118 江苏镇江 2035 | 171.37.134.178 8123 广西 2036 | 119.189.105.243 8888 山东聊城 2037 | 171.38.199.156 8123 广西钦州 2038 | 49.68.232.84 8118 江苏苏州 2039 | 110.191.195.29 8998 四川成都 2040 | 110.73.10.240 8123 广西防城港 2041 | 114.216.216.188 8888 江苏苏州 2042 | 119.133.135.188 8888 广东江门 2043 | 175.5.255.218 8888 湖南 2044 | 171.37.134.92 8123 广西 2045 | 183.140.85.199 3128 浙江嘉兴 2046 | 182.88.229.226 8123 广西南宁 2047 | 121.31.49.250 8123 广西南宁 2048 | 183.140.82.135 3128 浙江嘉兴 2049 | 171.110.212.72 8998 广西 2050 | 110.73.51.53 8123 广西南宁 2051 | 134.196.214.127 3128 重庆 2052 | 124.200.184.206 8118 北京 2053 | 14.159.241.144 8888 广东汕尾 2054 | 112.239.75.99 8888 山东枣庄 2055 | 210.28.32.167 808 江苏连云港 2056 | 113.73.211.12 8118 广东中山 2057 | 112.86.123.239 8888 江苏 2058 | 27.198.53.144 8888 山东济宁 2059 | 222.84.67.111 8888 广西南宁 2060 | 115.206.128.16 8888 浙江杭州 2061 | 111.224.12.231 8888 河北石家庄 2062 | 180.106.255.21 8888 江苏苏州 2063 | 112.102.221.220 8888 黑龙江哈尔滨 2064 | 110.152.49.97 8888 新疆乌鲁木齐 2065 | 221.215.252.48 8888 山东青岛 2066 | 1.205.237.195 8888 贵州 2067 | 125.32.227.100 8888 吉林 2068 | 124.200.181.50 8118 北京 2069 | 27.14.61.113 8080 重庆 2070 | 123.159.178.74 8888 浙江温州市平阳县 2071 | 183.46.107.191 8888 广东汕头 2072 | 106.59.2.9 8998 云南 2073 | 219.133.31.120 8888 广东深圳 2074 | 58.248.137.228 80 广东广州 2075 | 110.182.115.59 8118 山西临汾 2076 | 60.9.239.6 8888 河北衡水 2077 | 171.37.43.67 8123 广西南宁 2078 | 113.121.71.89 8888 山东 2079 | 120.34.223.232 8888 福建漳州 2080 | 220.170.182.5 80 湖南株洲 2081 | 182.90.24.11 80 广西梧州 2082 | 14.23.70.20 8088 广东 2083 | 124.235.198.54 8888 吉林长春 2084 | 111.193.11.153 8888 北京 2085 | 183.44.163.99 8888 广东湛江 2086 | 119.187.69.32 8888 山东菏泽 2087 | 122.137.5.241 8888 吉林 2088 | 171.39.37.168 8123 广西百色 2089 | 121.31.72.177 8123 广西梧州 2090 | 121.31.151.193 8123 广西北海 2091 | 182.89.10.123 8123 广西柳州 2092 | 49.72.128.146 8888 江苏苏州 2093 | 27.22.21.220 8888 湖北襄阳 2094 | 218.56.161.81 8080 山东莱芜 2095 | 119.4.163.227 80 四川成都 2096 | 110.73.5.193 8123 广西防城港 2097 | 117.66.167.7 8888 安徽安庆 2098 | 106.85.25.0 8118 重庆 2099 | 123.10.226.97 9999 河南开封 2100 | 171.38.217.39 8123 广西钦州 2101 | 182.90.94.127 8123 广西梧州 2102 | 221.7.202.45 8123 广西百色 2103 | 110.73.11.99 8123 广西防城港 2104 | 182.90.9.108 80 广西梧州 2105 | 125.82.138.105 8118 重庆 2106 | 121.233.89.71 8118 江苏徐州 2107 | 180.110.41.159 8118 江苏南京 2108 | 110.16.188.98 80 内蒙古包头 2109 | 123.54.198.136 8888 河南驻马店 2110 | 123.156.9.73 8888 浙江金华 2111 | 27.14.105.230 8118 重庆 2112 | 27.8.216.49 8118 重庆 2113 | 112.239.249.60 8888 山东聊城 2114 | 124.135.73.220 8998 山东青岛 2115 | 123.174.210.147 8888 山西运城 2116 | 115.210.16.244 8888 浙江金华 2117 | 123.190.143.187 8888 辽宁辽阳 2118 | 49.77.252.233 8118 江苏 2119 | 110.72.41.247 8123 广西贵港 2120 | 113.94.109.7 8888 广东茂名 2121 | 175.5.18.158 8888 湖南 2122 | 119.139.130.70 81 广东深圳 2123 | 183.140.85.21 3128 浙江嘉兴 2124 | 117.95.244.94 8888 江苏宿迁 2125 | 114.254.3.24 8888 北京 2126 | 221.225.37.39 3128 江苏苏州 2127 | 123.77.19.95 8118 江苏 2128 | 222.39.112.12 8118 内蒙古兴安盟乌兰浩特 2129 | 121.31.48.95 8123 广西南宁 2130 | 182.88.28.254 8123 广西南宁 2131 | 219.159.15.124 8888 内蒙古呼和浩特 2132 | 123.166.234.117 8888 黑龙江哈尔滨 2133 | 219.135.80.201 8118 广东佛山市南海区 2134 | 182.88.27.131 8123 广西南宁 2135 | 171.39.46.218 8123 广西百色 2136 | 182.88.187.67 8123 广西南宁 2137 | 182.88.230.6 8123 广西南宁 2138 | 171.38.178.22 8123 广西钦州 2139 | 122.94.187.37 8118 江苏 2140 | 150.255.138.69 8090 海南 2141 | 182.88.163.219 8123 广西南宁 2142 | 182.88.29.202 8123 广西南宁 2143 | 121.31.193.20 8123 广西桂林 2144 | 182.89.1.142 8123 广西柳州 2145 | 113.85.222.222 8888 广东肇庆 2146 | 121.31.71.18 80 广西梧州 2147 | 111.176.251.24 3128 湖北宜昌 2148 | 27.28.87.219 3128 湖北 2149 | 182.90.28.69 80 广西梧州 2150 | 121.31.85.11 8123 广西梧州 2151 | 210.33.29.31 9000 浙江嘉兴 2152 | 61.157.198.67 8080 四川内江 2153 | 59.67.86.113 8123 天津 2154 | 111.206.190.155 80 北京 2155 | 1.195.125.132 80 河南焦作 2156 | 123.124.168.149 80 北京 2157 | 123.124.168.107 80 北京 2158 | 180.213.92.17 8123 天津 2159 | 58.214.5.229 80 江苏无锡 2160 | 119.130.114.122 8888 广东广州 2161 | 122.236.83.37 8998 浙江绍兴 2162 | 125.217.199.148 8197 广东广州 2163 | 118.202.15.196 1080 辽宁沈阳 2164 | 42.228.220.145 80 河南郑州 2165 | 183.15.24.142 8118 广东深圳 2166 | 221.8.130.148 80 吉林 2167 | 121.42.55.162 3128 河北邢台 2168 | 112.74.28.173 1080 广东佛山 2169 | 101.231.245.10 80 上海 2170 | 210.5.149.43 8090 上海 2171 | 123.124.168.117 80 北京 2172 | 222.82.222.242 9999 新疆乌鲁木齐 2173 | 110.73.48.15 9999 广西南宁 2174 | 202.202.251.183 80 重庆 2175 | 139.196.204.160 3128 北京 2176 | 114.229.255.84 8123 江苏镇江 2177 | 183.128.72.85 8118 浙江杭州 2178 | 42.96.187.107 3128 北京 2179 | 218.109.105.178 80 浙江杭州 2180 | 101.230.214.25 8080 上海 2181 | 27.38.182.117 8118 广东深圳 2182 | 101.71.217.10 8118 浙江 2183 | 116.53.27.76 8118 云南红河州 2184 | 58.246.141.239 8080 上海 2185 | 58.101.215.2 80 浙江杭州 2186 | 59.40.103.122 8118 广东深圳 2187 | 58.61.184.209 8118 广东深圳 2188 | 115.200.33.210 8123 浙江杭州 2189 | 219.82.32.193 80 浙江杭州 2190 | 14.23.109.2 3128 广东 2191 | 59.39.88.190 8080 广东阳江 2192 | 123.138.216.93 9999 陕西西安 2193 | 112.74.207.196 3128 广东佛山 2194 | 115.29.34.2 3128 北京 2195 | 118.126.142.209 3128 湖南 2196 | 220.248.229.45 3128 安徽淮北 2197 | 101.251.199.66 3128 北京 2198 | 222.222.251.185 9999 河北邯郸 2199 | 183.25.98.154 9797 广东惠州 2200 | 120.27.7.2 3128 北京 2201 | 121.31.78.86 80 广西梧州 2202 | 124.127.77.106 8118 北京 2203 | 150.255.162.77 8090 海南 2204 | 117.83.52.92 8118 江苏苏州 2205 | 182.90.8.186 80 广西梧州 2206 | 150.255.151.41 8090 海南 2207 | 182.90.55.129 80 广西梧州 2208 | 115.46.65.12 8123 广西南宁 2209 | 218.58.151.170 8118 山东烟台 2210 | 118.255.207.144 3128 湖南长沙 2211 | 183.68.223.116 8118 重庆 2212 | 116.5.35.157 8118 广东佛山 2213 | 211.97.154.185 8090 福建南平 2214 | 111.182.174.236 3128 湖北宜昌 2215 | 219.153.233.184 8118 重庆 2216 | 183.185.0.168 8090 山西太原 2217 | 121.31.151.120 8123 广西北海 2218 | 182.40.53.238 8090 山东青岛 2219 | 123.114.47.175 8118 北京 2220 | 182.112.156.215 80 河南周口 2221 | 49.113.99.244 8090 新疆 2222 | 14.148.219.143 8888 广东 2223 | 182.90.5.13 80 广西梧州 2224 | 110.73.2.156 8123 广西防城港 2225 | 110.73.28.44 8123 广西防城港 2226 | 121.31.69.67 8123 广西梧州 2227 | 60.166.95.115 8090 安徽合肥 2228 | 139.227.74.65 3128 上海 2229 | 111.176.158.114 3128 湖北宜昌 2230 | 110.73.32.252 8123 广西防城港 2231 | 110.73.33.40 8123 广西防城港 2232 | 171.38.202.148 8123 广西钦州 2233 | 218.75.117.86 808 浙江绍兴 2234 | 182.90.15.80 80 广西梧州 2235 | 110.72.18.93 8123 广西贵港 2236 | 183.141.77.145 3128 浙江嘉兴 2237 | 110.72.16.223 8123 广西贵港 2238 | 182.90.51.218 80 广西梧州 2239 | 110.73.51.8 8123 广西南宁 2240 | 121.31.193.85 8123 广西桂林 2241 | 182.90.30.83 80 广西梧州 2242 | 182.90.42.232 80 广西梧州 2243 | 182.90.8.63 80 广西梧州 2244 | 182.90.30.154 8090 广西梧州 2245 | 119.52.98.145 8090 吉林通化 2246 | 120.27.7.124 80 北京 2247 | 27.28.80.225 3128 湖北 2248 | 119.29.167.23 80 北京 2249 | 27.194.220.243 8118 山东烟台 2250 | 119.29.230.205 80 北京 2251 | 42.238.58.40 8888 河南 2252 | 117.82.104.173 8888 江苏苏州 2253 | 182.90.11.245 80 广西梧州 2254 | 14.156.171.130 8888 广东 2255 | 115.224.216.240 8998 浙江绍兴 2256 | 171.39.83.66 8123 广西 2257 | 113.85.114.46 9999 广东潮州 2258 | 171.38.171.128 8123 广西钦州 2259 | 27.8.100.35 8888 重庆 2260 | 111.176.156.142 3128 湖北宜昌 2261 | 121.31.48.162 8123 广西南宁 2262 | 139.227.72.253 3128 上海 2263 | 110.73.35.148 8123 广西防城港 2264 | 49.113.217.250 8090 新疆 2265 | 110.73.55.86 8123 广西南宁 2266 | 60.13.15.2 8090 甘肃兰州 2267 | 182.88.231.143 8123 广西南宁 2268 | 114.96.34.76 8090 安徽合肥 2269 | 49.64.41.92 3128 江苏苏州 2270 | 123.160.165.137 81 河南郑州 2271 | 183.0.164.183 8888 广东广州 2272 | 61.184.59.99 3128 湖北宜昌 2273 | 110.73.50.86 8123 广西南宁 2274 | 182.90.29.220 80 广西梧州 2275 | 123.130.4.117 8118 山东烟台 2276 | 182.90.28.93 80 广西梧州 2277 | 183.12.28.150 8888 广东深圳 2278 | 118.255.204.131 3128 湖南长沙 2279 | 222.90.14.196 80 陕西西安 2280 | 14.154.165.135 9999 广东深圳 2281 | 42.86.81.156 8090 辽宁 2282 | 112.238.25.69 8118 山东烟台 2283 | 121.31.197.102 8123 广西北海 2284 | 120.83.201.93 8888 广东珠海 2285 | 115.46.75.167 8123 广西南宁 2286 | 114.218.54.178 8118 江苏苏州 2287 | 110.73.32.200 8123 广西防城港 2288 | 14.158.224.150 8888 广东汕头 2289 | 171.37.133.37 8123 广西 2290 | 110.73.4.186 8123 广西防城港 2291 | 222.160.53.140 8080 吉林四平 2292 | 110.73.62.96 8123 广西南宁 2293 | 121.31.77.30 8123 广西梧州 2294 | 121.31.168.130 8123 广西北海 2295 | 119.130.192.104 8888 广东广州 2296 | 222.160.2.158 8080 吉林四平 2297 | 117.81.84.89 8118 江苏苏州 2298 | 182.90.20.190 80 广西梧州 2299 | 110.73.7.54 8123 广西防城港 2300 | 110.73.2.239 8123 广西防城港 2301 | 112.237.71.115 8118 山东烟台 2302 | 106.111.163.242 8888 广东 2303 | 119.29.136.104 8888 北京 2304 | 180.105.15.204 8080 江苏苏州 2305 | 110.72.19.18 8123 广西贵港 2306 | 1.199.229.181 8888 河南新乡 2307 | 42.49.140.122 8123 湖南怀化 2308 | 42.102.144.218 8888 黑龙江 2309 | 120.27.5.104 80 北京 2310 | 122.193.57.88 8888 江苏苏州 2311 | 171.38.162.197 8123 广西钦州 2312 | 27.226.223.69 8888 甘肃 2313 | 171.116.140.247 80 山西太原 2314 | 14.125.62.79 8118 广东 2315 | 182.90.36.242 80 广西梧州 2316 | 27.13.31.226 80 重庆 2317 | 110.73.7.192 8123 广西防城港 2318 | 110.73.9.229 8123 广西防城港 2319 | 110.73.9.103 8123 广西防城港 2320 | 110.73.9.43 8123 广西防城港 2321 | 110.73.4.15 8123 广西防城港 2322 | 36.6.95.200 8888 安徽 2323 | 119.181.7.17 8888 山东济宁 2324 | 182.90.75.54 80 广西梧州 2325 | 1.87.218.30 8888 陕西西安 2326 | 123.113.73.115 808 北京 2327 | 60.161.35.40 8090 云南红河州 2328 | 121.31.153.174 8123 广西北海 2329 | 182.54.17.112 8888 宁夏石嘴山 2330 | 182.90.54.149 80 广西梧州 2331 | 222.220.34.74 1337 云南西双版纳州景洪 2332 | 221.222.27.252 8118 北京 2333 | 182.90.32.32 80 广西梧州 2334 | 171.36.54.1 8090 广西南宁 2335 | 36.22.165.147 8080 浙江 2336 | 183.61.236.53 3128 广东广州 2337 | 124.66.55.16 8090 海南 2338 | 119.140.0.12 8080 广东揭阳 2339 | 183.53.183.12 8888 广东 2340 | 115.46.90.113 8123 广西南宁 2341 | 49.75.85.66 8888 江苏苏州 2342 | 119.166.218.255 80 山东青岛 2343 | 182.40.162.198 808 山东青岛 2344 | 110.72.5.160 8123 广西贵港 2345 | 222.173.221.46 8118 山东烟台 2346 | 121.31.194.173 8123 广西桂林 2347 | 222.170.236.35 8888 黑龙江黑河 2348 | 183.140.164.97 3128 浙江嘉兴 2349 | 113.243.154.140 8080 湖南 2350 | 27.213.201.239 8118 山东 2351 | 171.36.40.194 8090 广西南宁 2352 | 110.72.218.183 8123 广西柳州 2353 | 210.79.107.216 80 广东深圳市南山区 2354 | 182.90.37.177 80 广西梧州 2355 | 115.159.209.229 80 河南郑州 2356 | 112.85.131.29 8090 江苏南通 2357 | 115.54.36.8 8118 河南新乡 2358 | 119.4.195.201 8080 四川成都 2359 | 125.89.243.230 8888 广东韶关 2360 | 182.90.20.219 80 广西梧州 2361 | 115.227.192.198 3128 浙江嘉兴 2362 | 182.90.35.153 80 广西梧州 2363 | 110.73.1.75 8123 广西防城港 2364 | 119.4.64.73 80 四川成都 2365 | 123.170.251.103 808 山东滨州 2366 | 171.39.235.24 80 广西 2367 | 139.129.41.172 80 北京 2368 | 171.39.233.143 80 广西 2369 | 202.111.167.76 8080 吉林 2370 | 118.255.120.212 3128 湖南长沙 2371 | 118.255.196.188 8080 湖南长沙 2372 | 110.73.2.234 8123 广西防城港 2373 | 116.17.211.150 8118 广东河源 2374 | 42.233.110.151 808 河南 2375 | 182.90.95.95 8123 广西梧州 2376 | 182.90.23.144 80 广西梧州 2377 | 171.39.45.180 8123 广西百色 2378 | 115.46.89.184 8123 广西南宁 2379 | 110.72.5.151 8123 广西贵港 2380 | 182.90.83.24 80 广西梧州 2381 | 110.72.3.105 8123 广西贵港 2382 | 110.73.10.33 8123 广西防城港 2383 | 113.204.226.158 808 重庆 2384 | 171.38.86.228 8123 广西玉林 2385 | 182.88.163.213 8123 广西南宁 2386 | 115.228.107.155 3128 浙江嘉兴 2387 | 115.159.193.48 80 河南郑州 2388 | 171.114.60.161 3128 湖北 2389 | 112.74.72.168 8787 广东佛山 2390 | 182.90.62.34 80 广西梧州 2391 | 121.31.92.156 80 广西梧州 2392 | 171.36.255.163 8123 广西南宁 2393 | 113.58.179.14 8090 海南海口 2394 | 182.90.15.82 80 广西梧州 2395 | 121.31.196.180 8123 广西桂林 2396 | 110.72.5.194 8123 广西贵港 2397 | 182.89.4.231 8123 广西柳州 2398 | 220.166.242.188 8118 四川成都 2399 | 119.186.190.126 8080 山东东营 2400 | 121.31.88.105 80 广西梧州 2401 | 116.10.197.126 8118 广西南宁 2402 | 182.89.7.140 8123 广西柳州 2403 | 117.22.113.197 80 陕西西安 2404 | 110.72.40.189 8123 广西贵港 2405 | 60.187.14.246 8080 浙江绍兴 2406 | 59.55.255.18 8090 江西吉安 2407 | 123.172.78.76 8118 吉林长春 2408 | 175.152.25.224 8080 四川成都 2409 | 110.152.84.202 8090 新疆乌鲁木齐 2410 | 171.38.140.65 8123 广西钦州 2411 | 139.226.1.199 80 上海 2412 | 175.5.171.35 8888 湖南 2413 | 121.63.23.170 3128 湖北宜昌 2414 | 182.90.80.33 8123 广西梧州 2415 | 222.140.61.83 8090 河南许昌 2416 | 118.113.7.48 8118 四川成都 2417 | 182.90.19.248 80 广西梧州 2418 | 182.90.38.26 80 广西梧州 2419 | 182.88.190.234 8123 广西南宁 2420 | 171.39.119.98 8123 广西 2421 | 110.72.34.161 8123 广西贵港 2422 | 171.39.8.19 8123 广西百色 2423 | 183.70.187.240 8080 重庆 2424 | 183.68.152.67 80 重庆 2425 | 123.144.50.153 80 重庆 2426 | 124.114.21.114 80 陕西西安 2427 | 171.38.165.250 8123 广西钦州 2428 | 110.72.27.158 8123 广西贵港 2429 | 27.9.163.167 8090 重庆 2430 | 110.72.32.78 8123 广西贵港 2431 | 171.39.75.224 8123 广西百色 2432 | 171.39.234.245 80 广西 2433 | 182.90.66.179 80 广西梧州 2434 | 42.233.18.143 8118 河南 2435 | 59.173.224.63 8090 湖北武汉 2436 | 112.64.29.215 8090 上海 2437 | 182.90.67.220 80 广西梧州 2438 | 222.79.116.232 8888 福建厦门 2439 | 42.96.176.123 80 北京 2440 | 182.90.19.145 80 广西梧州 2441 | 182.90.35.124 80 广西梧州 2442 | 182.90.67.62 80 广西梧州 2443 | 122.7.242.149 8118 山东 2444 | 182.90.21.251 80 广西梧州 2445 | 49.64.217.206 3128 江苏苏州 2446 | 60.223.206.200 8888 山西朔州 2447 | 110.73.8.46 8123 广西防城港 2448 | 14.159.94.7 8118 广东韶关 2449 | 121.31.143.72 8123 广西北海 2450 | 61.130.212.156 8080 浙江湖州 2451 | 110.72.34.3 8123 广西贵港 2452 | 42.63.206.190 8090 宁夏银川 2453 | 221.205.89.236 8090 山西太原 2454 | 117.22.62.130 80 陕西西安 2455 | 171.39.26.69 8123 广西百色 2456 | 171.38.167.205 8123 广西钦州 2457 | 182.90.80.59 80 广西梧州 2458 | 121.31.193.212 8123 广西桂林 2459 | 182.89.4.155 8123 广西柳州 2460 | 58.245.207.107 8090 吉林通化 2461 | 110.72.22.11 8123 广西贵港 2462 | 182.88.228.196 8123 广西南宁 2463 | 120.25.173.84 80 北京 2464 | 120.25.174.182 80 北京 2465 | 27.12.175.46 8090 重庆 2466 | 27.12.174.47 8090 重庆 2467 | 110.72.36.86 8123 广西贵港 2468 | 110.73.37.56 8123 广西防城港 2469 | 110.73.51.219 8123 广西南宁 2470 | 121.31.163.104 8123 广西北海 2471 | 171.38.19.205 8123 广西玉林 2472 | 110.72.25.30 8123 广西贵港 2473 | 182.89.7.9 8123 广西柳州 2474 | 118.81.69.6 8090 山西太原 2475 | 59.55.251.237 8090 江西吉安 2476 | 110.73.5.94 8123 广西防城港 2477 | 110.73.9.246 8123 广西防城港 2478 | 111.176.250.65 3128 湖北宜昌 2479 | 150.255.153.24 8090 海南 2480 | 113.230.45.206 80 辽宁盘锦 2481 | 171.37.134.188 8123 广西 2482 | 111.176.153.203 3128 湖北宜昌 2483 | 121.31.139.60 8123 广西北海 2484 | 110.73.12.177 8123 广西防城港 2485 | 27.12.41.54 8090 重庆 2486 | 110.73.38.16 8123 广西防城港 2487 | 182.88.229.222 8123 广西南宁 2488 | 60.217.70.48 8080 山东威海 2489 | 218.91.14.167 8090 江苏扬州 2490 | 113.58.177.229 8090 海南海口 2491 | 123.233.67.200 8090 山东济南 2492 | 112.74.114.134 80 广东佛山 2493 | 183.142.148.126 8090 浙江湖州 2494 | 182.88.207.160 8123 广西南宁 2495 | 182.89.4.31 8123 广西柳州 2496 | 110.73.9.73 8123 广西防城港 2497 | 182.90.66.99 80 广西梧州 2498 | 110.73.4.61 8123 广西防城港 2499 | 182.90.56.13 80 广西梧州 2500 | 121.63.33.207 3128 湖北宜昌 2501 | 112.64.31.121 8090 上海 2502 | 171.39.1.223 8123 广西百色 2503 | 171.38.200.116 8123 广西钦州 2504 | 171.38.166.200 8123 广西钦州 2505 | 39.87.113.60 80 山东 2506 | 123.233.67.239 8090 山东济南 2507 | 150.255.0.91 8090 海南 2508 | 118.255.207.249 3128 湖南长沙 2509 | 221.205.88.8 8090 山西太原 2510 | 112.64.30.190 8090 上海 2511 | 27.191.77.79 8090 河北唐山 2512 | 49.113.217.45 8090 新疆 2513 | 119.55.132.195 8090 吉林 2514 | 122.230.109.233 8090 浙江湖州 2515 | 60.166.73.75 8090 安徽合肥 2516 | 121.31.48.173 8123 广西南宁 2517 | 120.83.133.216 80 广东佛山 2518 | 171.36.42.53 8090 广西南宁 2519 | 182.90.0.255 80 广西梧州 2520 | 220.176.150.225 8090 江西吉安 2521 | 171.38.186.115 8123 广西钦州 2522 | 121.31.48.28 8123 广西南宁 2523 | 182.88.228.57 8123 广西南宁 2524 | 27.9.160.171 8090 重庆 2525 | 27.12.193.41 8090 重庆 2526 | 110.72.32.209 8123 广西贵港 2527 | 114.215.149.171 80 北京 2528 | 110.87.152.241 8090 福建福州 2529 | 220.187.214.89 8090 浙江绍兴 2530 | 120.32.120.223 8090 福建福州 2531 | 110.73.7.194 8123 广西防城港 2532 | 110.73.49.31 8123 广西南宁 2533 | 182.88.31.247 8123 广西南宁 2534 | 49.118.254.184 8090 新疆 2535 | 171.37.147.115 8090 广西 2536 | 182.90.80.185 8123 广西梧州 2537 | 171.37.135.249 8123 广西 2538 | 171.38.135.36 8123 广西钦州 2539 | 171.38.23.114 8123 广西玉林 2540 | 110.72.30.2 8123 广西贵港 2541 | 1.193.70.85 8090 河南郑州 2542 | 175.164.168.78 80 辽宁 2543 | 112.74.204.14 80 广东佛山 2544 | 27.9.157.166 8090 重庆 2545 | 121.31.141.168 8123 广西北海 2546 | 121.31.175.55 8123 广西北海 2547 | 110.73.10.129 8123 广西防城港 2548 | 182.88.205.185 8123 广西南宁 2549 | 120.87.213.158 8080 广东中山 2550 | 121.31.79.250 80 广西梧州 2551 | 121.31.153.233 8123 广西北海 2552 | 110.73.9.52 8123 广西防城港 2553 | 171.38.243.66 8123 广西钦州 2554 | 117.21.45.89 8080 江西 2555 | 171.36.254.73 8123 广西南宁 2556 | 115.46.65.223 8123 广西南宁 2557 | 27.42.190.232 8080 广东中山 2558 | 112.195.155.142 80 四川 2559 | 121.31.88.126 80 广西梧州 2560 | 117.34.179.97 80 陕西渭南 2561 | 110.73.5.146 8123 广西防城港 2562 | 121.31.51.184 8123 广西南宁 2563 | 110.73.9.87 8123 广西防城港 2564 | 113.200.220.8 8123 陕西西安 2565 | 115.46.69.53 8123 广西南宁 2566 | 182.88.204.197 8123 广西南宁 2567 | 27.198.96.183 8080 山东济宁 2568 | 121.31.76.255 80 广西梧州 2569 | 110.72.18.6 8123 广西贵港 2570 | 182.90.40.239 80 广西梧州 2571 | 112.74.200.249 80 广东佛山 2572 | 171.38.240.205 8123 广西钦州 2573 | 171.36.62.71 8123 广西南宁 2574 | 171.38.208.132 8123 广西钦州 2575 | 110.73.53.16 8123 广西南宁 2576 | 171.108.184.100 8080 广西防城港 2577 | 110.73.30.88 8123 广西防城港 2578 | 117.59.217.238 80 重庆 2579 | 171.39.45.48 8123 广西百色 2580 | 182.90.72.76 80 广西梧州 2581 | 121.31.147.32 8123 广西北海 2582 | 111.79.27.147 8080 江西赣州 2583 | 171.37.158.253 8123 广西 2584 | 182.90.41.143 80 广西梧州 2585 | 182.90.21.197 80 广西梧州 2586 | 110.73.3.222 8123 广西防城港 2587 | 183.185.3.234 8090 山西太原 2588 | 182.90.63.10 80 广西梧州 2589 | 117.64.229.186 8080 安徽合肥 2590 | 182.88.28.97 8123 广西南宁 2591 | 110.117.90.138 8123 广西柳州 2592 | 182.90.17.165 80 广西梧州 2593 | 220.175.0.149 80 江西南昌 2594 | 182.90.8.93 80 广西梧州 2595 | 27.12.173.91 8090 重庆 2596 | 121.31.192.20 8123 广西桂林 2597 | 110.72.18.217 8123 广西贵港 2598 | 182.90.110.176 8123 广西梧州 2599 | 221.7.202.208 8123 广西百色 2600 | 223.215.63.117 8090 安徽 2601 | 182.90.12.76 80 广西梧州 2602 | 182.90.31.46 8090 广西梧州 2603 | 171.37.152.47 8123 广西 2604 | 171.37.153.248 8123 广西 2605 | 59.59.193.131 8888 福建三明 2606 | 27.42.160.78 8090 广东中山 2607 | 183.22.128.26 8090 广东东莞 2608 | 182.90.31.96 80 广西梧州 2609 | 27.41.172.68 80 广东汕头 2610 | 180.213.32.246 8090 天津 2611 | 180.161.240.178 80 上海 2612 | 182.90.56.124 80 广西梧州 2613 | 182.90.56.217 8123 广西梧州 2614 | 182.90.14.120 80 广西梧州 2615 | 27.9.156.114 8090 重庆 2616 | 120.36.218.128 8090 福建厦门 2617 | 182.90.5.177 80 广西梧州 2618 | 182.85.188.159 8080 江西南昌 2619 | 182.40.166.138 8090 山东青岛 2620 | 121.31.75.34 80 广西梧州 2621 | 121.31.49.4 8123 广西南宁 2622 | 220.189.96.40 3128 浙江嘉兴 2623 | 221.14.85.122 80 河南焦作 2624 | 121.31.151.33 8123 广西北海 2625 | 182.120.23.134 80 河南开封 2626 | 182.90.29.104 80 广西梧州 2627 | 118.81.68.95 8090 山西太原 2628 | 110.73.0.5 8123 广西防城港 2629 | 182.88.163.49 8123 广西南宁 2630 | 60.176.45.32 80 浙江杭州 2631 | 182.88.81.228 8123 广西南宁 2632 | 110.73.13.128 8123 广西防城港 2633 | 182.88.255.248 8123 广西南宁 2634 | 121.31.51.79 8123 广西南宁 2635 | 121.31.79.19 8123 广西梧州 2636 | 110.73.11.194 8123 广西防城港 2637 | 182.90.27.111 80 广西梧州 2638 | 1.193.77.233 8090 河南郑州 2639 | 183.184.194.173 8090 山西太原 2640 | 183.26.89.232 8080 广东佛山 2641 | 110.72.46.124 8123 广西贵港 2642 | 110.73.31.209 8123 广西防城港 2643 | 59.55.253.32 8090 江西吉安 2644 | 182.90.50.159 8123 广西梧州 2645 | 121.31.109.62 8123 广西百色 2646 | 27.217.82.246 9999 山东 2647 | 182.90.55.153 80 广西梧州 2648 | 120.27.121.61 80 北京 2649 | 182.88.206.175 8123 广西南宁 2650 | -------------------------------------------------------------------------------- /proxyip/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.6.0 2 | gevent==1.1.1 -------------------------------------------------------------------------------- /spiderITEbook/ITEBook.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import requests 3 | import re 4 | import urllib 5 | import pymongo 6 | """ 7 | 爬取电子书下载地址,存入MonogoDB 8 | """ 9 | 10 | 11 | class Ebook(object): 12 | webUrl="http://www.allitebooks.com/" 13 | reIndexUrl=r'' 14 | pageUrl="http://www.allitebooks.com/programming/page/{}/" 15 | reBookUrl=r'

    .*?

    ' 16 | reBookDownload=r"http://file.allitebooks.com/.*?\.pdf" 17 | 18 | def __init__(self): 19 | self.bookDownloadUrl=list() 20 | 21 | def index(self): 22 | indexContent=requests.get(self.webUrl).content 23 | proUrl=re.findall(self.reIndexUrl,indexContent) 24 | return proUrl 25 | 26 | def pageContent(self): 27 | preTypeUrl=self.index() 28 | for bType in preTypeUrl: 29 | bookType=self.webUrl+bType 30 | pageNum=1 31 | singlePageContent="" 32 | while not "No Posts Found" in singlePageContent: 33 | singlePageContent=requests.get(self.pageUrl.format(pageNum)).content #每页内容 34 | prePageUrl=re.findall(self.reBookUrl,singlePageContent) 35 | for url in prePageUrl: 36 | book=requests.get(url).content #一本书的内容页 37 | downloadUrl=re.search(r"http://file\.allitebooks\.com/.*?\.pdf",book) 38 | if downloadUrl: 39 | print "{'%s':'%s'}" %(bType,downloadUrl.group(0)) 40 | self.insertData({bType:downloadUrl.group(0)}) 41 | print downloadUrl.group(0) 42 | pageNum+=1 43 | 44 | def insertData(self,data): 45 | client = pymongo.MongoClient('localhost', 27017) 46 | db=client.ebook #数据库 47 | book=db.book #表 48 | book.insert(data) 49 | if __name__ == '__main__': 50 | Ebook().pageContent() --------------------------------------------------------------------------------