Python Google服务器 [英] Python Google Server

查看:74
本文介绍了Python Google服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经攻击了''GoogleCacheServer''。它基于

SimpleHTTPServer。运行以下脚本(希望谷歌小组

不会破坏缩进)并将浏览器代理设置设置为

''localhost:8000''。它将让您使用谷歌的

缓存浏览互联网。显然你会错过图片,javascript,css文件等。


像谷歌一样看世界!


(这是实际上是一个创造性的短期措施,可以在工作中实现限制性的互联网政策:-)我可能会把它放在

Python Cookbook中它非常有趣(所以如果行长或缩进是这里的b
,请尝试一下)。在Windows XP上测试,使用Python 2.3和IE浏览器。


#版权所有Michael Foord,2004& 2005.

#根据BSD许可证发布

#请参阅 http://www.voidspace.org.uk/documents/BSD-LICENSE.txt


#有关错误修正,更新和支持的信息,请加入

Pythonutils邮件列表。

http://voidspace.org.uk/mailman/list...idspace.org.uk

#欢迎评论,建议和错误报告。

#脚本维护在 http://www.voidspace.org.uk/python/index.shtml

#E-mail fu ****** @ voidspace.org.uk


导入谷歌

import BaseHTTPServer

import shutil
来自StringIO的
导入StringIO

import urlparse


__version__ =''0.1.0''

"""

这是一个服务器的简单实现,它从谷歌缓存中获取网页




它允许您从浏览器浏览互联网,使用谷歌

缓存。


运行此脚本,然后将浏览器代理设置设置为

localhost:8000


需要google.py(和谷歌许可证密钥)。

参见 http://pygoogle.sourceforge.net/

http://www.google.com/apis/

"""


cached_types = [''txt'',''html'',''htm'',''shtml'',''shtm'',''cgi'',''pl'',

''py'']

google.setLicense(google.getLicense())

googlemarker ='''''< i> Google不隶属于此

页面的作者,也不对其

内容负责。< / I>< /字体>< /中心],[< / TD>< / TR>< /表>< / TD>< / TR>< /表> \\\
< HR> \ n'''''

markerlen = len(googlemarker)

class googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):

server_version =" googleCache /" + __version__

cached_types = cached_types

googlemarker = googlemarker

markerlen = markerlen


def do_GET(自我):

f = self.send_head()

如果f:

self.copyfile(f,self.wfile)

f.close()


def send_head(self):

""" GET和HEAD命令的公共代码。


这会发送响应代码和MIME标题。


返回值是文件对象(必须复制)

由调用者输出到输出文件,除非命令是HEAD,

并且必须在所有情况下由调用者关闭),或者

无,在这种情况下来电者没什么可做的。


""

print self.path

url = urlparse.urlparse (self.path)[2]

dotloc = url.find(''。'')+ 1

如果dotloc和url [dotloc:]不在自己身上。 cached_types:

返回无#不是cach ed类型 - 甚至不尝试


thepage = google.doGetCachedPage(self.path)

headerpos = thepage.find(self.googlemarker)

if headerpos!= -1:#remove google header

pos = self.markerlen + headerpos

thepage = thepage [pos:]


f = StringIO(页面)


self.send_response(200)

self.send_header(" Content-输入','''text / html'')

self.send_header(" Content-Length",str(len(thepage)))

self.end_headers( )

返回f

def copyfile(self,source,outputfile):

shutil.copyfileobj(source,outputfile)< br $>
def测试(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):

BaseHTTPServer.test(HandlerClass,ServerClass)

if __name__ ==''__ main__'':

test()

I''ve hacked together a ''GoogleCacheServer''. It is based on
SimpleHTTPServer. Run the following script (hopefully google groups
won''t mangle the indentation) and set your browser proxy settings to
''localhost:8000''. It will let you browse the internet using google''s
cache. Obviously you''ll miss images, javascript, css files, etc.

See the world as google sees it !

(This is actually an ''inventive'' short term measure to get round a
restrictive internet policy at work :-) I''ll probably put it in the
Python Cookbook as it''s quite fun (so if line lengths or indentation is
mangled here, try there). Tested on Windows XP, with Python 2.3 and IE.

# Copyright Michael Foord, 2004 & 2005.
# Released subject to the BSD License
# Please see http://www.voidspace.org.uk/documents/BSD-LICENSE.txt

# For information about bugfixes, updates and support, please join the
Pythonutils mailing list.
# http://voidspace.org.uk/mailman/list...idspace.org.uk
# Comments, suggestions and bug reports welcome.
# Scripts maintained at http://www.voidspace.org.uk/python/index.shtml
# E-mail fu******@voidspace.org.uk

import google
import BaseHTTPServer
import shutil
from StringIO import StringIO
import urlparse

__version__ = ''0.1.0''
"""
This is a simple implementation of a server that fetches web pages
from the google cache.

It lets you explore the internet from your browser, using the google
cache.

Run this script and then set your browser proxy settings to
localhost:8000

Needs google.py (and a google license key).
See http://pygoogle.sourceforge.net/
and http://www.google.com/apis/
"""

cached_types = [''txt'', ''html'', ''htm'', ''shtml'', ''shtm'', ''cgi'', ''pl'',
''py'']
google.setLicense(google.getLicense())
googlemarker = ''''''<i>Google is not affiliated with the authors of this
page nor responsible for its
content.</i></font></center></td></tr></table></td></tr></table>\n<hr>\n''''''
markerlen = len(googlemarker)

class googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):
server_version = "googleCache/" + __version__
cached_types = cached_types
googlemarker = googlemarker
markerlen = markerlen

def do_GET(self):
f = self.send_head()
if f:
self.copyfile(f, self.wfile)
f.close()

def send_head(self):
"""Common code for GET and HEAD commands.

This sends the response code and MIME headers.

Return value is either a file object (which has to be copied
to the outputfile by the caller unless the command was HEAD,
and must be closed by the caller under all circumstances), or
None, in which case the caller has nothing further to do.

"""
print self.path
url = urlparse.urlparse(self.path)[2]
dotloc = url.find(''.'') + 1
if dotloc and url[dotloc:] not in self.cached_types:
return None # not a cached type - don''t even try

thepage = google.doGetCachedPage(self.path)
headerpos = thepage.find(self.googlemarker)
if headerpos != -1: # remove the google header
pos = self.markerlen + headerpos
thepage = thepage[pos:]

f = StringIO(thepage)

self.send_response(200)
self.send_header("Content-type", ''text/html'')
self.send_header("Content-Length", str(len(thepage)))
self.end_headers()
return f

def copyfile(self, source, outputfile):
shutil.copyfileobj(source, outputfile)
def test(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass, ServerClass)
if __name__ == ''__main__'':
test()

推荐答案

< a href =mailto:fu ****** @ gma il.com> fu ****** @ gmail.com 写道:


大声笑,很酷的黑客!制作一篇关于它的斜线文章!!
fu******@gmail.com wrote:

lol ,cool hack!! make a slashdot article about it!!
我已经攻击了一个''GoogleCacheServer''。它基于SimpleHTTPServer。运行以下脚本(希望谷歌小组
不会破坏缩进)并将浏览器代理设置设置为
''localhost:8000''。它可以让你使用谷歌的缓存浏览互联网。显然你会错过图片,javascript,css文件等。

谷歌看到这个世界!

(这实际上是一个''创造性''短片在工作中采取限制性互联网政策的措施:-)我可能会把它放在Cook Python Python Cookbook中,因为它非常有趣(所以如果行长或缩进是
在这里受损,试试那里)。在Windows XP上测试,使用Python 2.3和IE浏览器。

#Copyright Michael Foord,2004& 2005年。
#发布受BSD许可证的限制
#请参阅 http://www.voidspace.org.uk/documents/BSD-LICENSE.txt

#有关错误修正,更新和支持的信息,请加入
Pythonutils邮件列表。
http ://voidspace.org.uk/mailman/list...idspace.org.uk
#欢迎评论,建议和错误报告。
#Scripts维护在 http://www.voidspace.org.uk/python/index.shtml
#电子邮件 fu******@voidspace.org.uk
导入谷歌
导入BaseHTTPServer
导入shutil
从StringIO导入StringIO
导入urlparse

__version__ =''0.1.0'

"""
这是一个从谷歌缓存中获取网页的服务器的简单实现。

它可以让你使用google
缓存从浏览器浏览互联网。

运行此脚本,然后将浏览器代理设置设置为
localhost:8000

需要google.py(和谷歌许可证密钥)。
请参阅 http:// pygoogle。 sourceforge.net/
http://www.google。 com / apis /
"""

cached_types = [''txt'',''html'',''htm'',''shtml '',''shtm'',''cgi'',''pl'',
''py'']
google.setLicense(google.getLicense())
googlemarker ='''''< i> Google不隶属于此页面的作者,也不负责其

cont 。ENT< / I>< /字体>< /中心],[< / TD>< / TR>< /表>< / TD>< / TR>< /表> \\\
< ; hr> \ n''''''\\ n \\ n'\\ n \\ n标记符= len(googlemarker)

类googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):
server_version =" googleCache /" + __version__
cached_types = cached_types
googlemarker = googlemarker
markerlen = markerlen


def do_GET(self):
f = self.send_head() self.copyfile(f,self.wfile)
f.close()

def send_head(self):
"" GET和HEAD命令的通用代码。

这将发送响应代码和MIME标题。

返回值是文件对象(必须复制并且必须在所有情况下由调用者关闭,否则调用者将输出文件添加到输出文件中,或者
无,在这种情况下调用者没有其他任何操作。打印self.path
url = urlparse.urlparse(self.path)[2]
dotloc = url.find(''。 '')+ 1
如果dotloc和url [dotloc:]不在self.cached_typ中es:
返回无#不是缓存类型 - 甚至不尝试

thepage = google.doGetCachedPage(self.path)
headerpos = thepage.find(self。 googlemarker)
如果是标题符!= -1:#删除谷歌标题
pos = self.markerlen + headerpos
thepage = thepage [pos:]

f = StringIO(页面)

self.send_response(200)
self.send_header(" Content-type",''text / html'')
self.send_header(" ; Content-Length",str(len(thepage)))
self.end_headers()
返回f
def copyfile(self,source,outputfile):
shutil.copyfileobj(source,outputfile)

def test(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass,ServerClass)
如果__name__ ==''__ main__'':
test()
I''ve hacked together a ''GoogleCacheServer''. It is based on
SimpleHTTPServer. Run the following script (hopefully google groups
won''t mangle the indentation) and set your browser proxy settings to
''localhost:8000''. It will let you browse the internet using google''s
cache. Obviously you''ll miss images, javascript, css files, etc.

See the world as google sees it !

(This is actually an ''inventive'' short term measure to get round a
restrictive internet policy at work :-) I''ll probably put it in the
Python Cookbook as it''s quite fun (so if line lengths or indentation is
mangled here, try there). Tested on Windows XP, with Python 2.3 and IE.

# Copyright Michael Foord, 2004 & 2005.
# Released subject to the BSD License
# Please see http://www.voidspace.org.uk/documents/BSD-LICENSE.txt

# For information about bugfixes, updates and support, please join the
Pythonutils mailing list.
# http://voidspace.org.uk/mailman/list...idspace.org.uk
# Comments, suggestions and bug reports welcome.
# Scripts maintained at http://www.voidspace.org.uk/python/index.shtml
# E-mail fu******@voidspace.org.uk

import google
import BaseHTTPServer
import shutil
from StringIO import StringIO
import urlparse

__version__ = ''0.1.0''
"""
This is a simple implementation of a server that fetches web pages
from the google cache.

It lets you explore the internet from your browser, using the google
cache.

Run this script and then set your browser proxy settings to
localhost:8000

Needs google.py (and a google license key).
See http://pygoogle.sourceforge.net/
and http://www.google.com/apis/
"""

cached_types = [''txt'', ''html'', ''htm'', ''shtml'', ''shtm'', ''cgi'', ''pl'',
''py'']
google.setLicense(google.getLicense())
googlemarker = ''''''<i>Google is not affiliated with the authors of this
page nor responsible for its
content.</i></font></center></td></tr></table></td></tr></table>\n<hr>\n'''''' markerlen = len(googlemarker)

class googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):
server_version = "googleCache/" + __version__
cached_types = cached_types
googlemarker = googlemarker
markerlen = markerlen

def do_GET(self):
f = self.send_head()
if f:
self.copyfile(f, self.wfile)
f.close()

def send_head(self):
"""Common code for GET and HEAD commands.

This sends the response code and MIME headers.

Return value is either a file object (which has to be copied
to the outputfile by the caller unless the command was HEAD,
and must be closed by the caller under all circumstances), or
None, in which case the caller has nothing further to do.

"""
print self.path
url = urlparse.urlparse(self.path)[2]
dotloc = url.find(''.'') + 1
if dotloc and url[dotloc:] not in self.cached_types:
return None # not a cached type - don''t even try

thepage = google.doGetCachedPage(self.path)
headerpos = thepage.find(self.googlemarker)
if headerpos != -1: # remove the google header
pos = self.markerlen + headerpos
thepage = thepage[pos:]

f = StringIO(thepage)

self.send_response(200)
self.send_header("Content-type", ''text/html'')
self.send_header("Content-Length", str(len(thepage)))
self.end_headers()
return f

def copyfile(self, source, outputfile):
shutil.copyfileobj(source, outputfile)
def test(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass, ServerClass)
if __name__ == ''__main__'':
test()



它适用于linux上的opera和firefox,但你无法在缓存中搜索

google!如果你能以某种方式搜索仅,那将会更有用。在

缓存中,而不是直接链接。也许你可以把一个神奇的网址

在缓存中搜索,比如搜索:搜索条件

fu ****** @ gmail.com 写道:
it works on opera and firefox on linux, but you cant search in the cached
google! it would be more usefull if you could somehow search "only" in the
cache instead of putting the straight link. maybe you could put a magic url
to search in the cache, like search:"search terms"

fu******@gmail.com wrote:
我已经攻击了''GoogleCacheServer''。它基于SimpleHTTPServer。运行以下脚本(希望谷歌小组
不会破坏缩进)并将浏览器代理设置设置为
''localhost:8000''。它可以让你使用谷歌的缓存浏览互联网。显然你会错过图片,javascript,css文件等。

谷歌看到这个世界!

(这实际上是一个''创造性''短片在工作中采取限制性互联网政策的措施:-)我可能会把它放在Cook Python Python Cookbook中,因为它非常有趣(所以如果行长或缩进是
在这里受损,试试那里)。在Windows XP上测试,使用Python 2.3和IE浏览器。

#Copyright Michael Foord,2004& 2005年。
#发布受BSD许可证的限制
#请参阅 http://www.voidspace.org.uk/documents/BSD-LICENSE.txt

#有关错误修正,更新和支持的信息,请加入
Pythonutils邮件列表。
http ://voidspace.org.uk/mailman/list...idspace.org.uk
#欢迎评论,建议和错误报告。
#Scripts维护在 http://www.voidspace.org.uk/python/index.shtml
#电子邮件 fu******@voidspace.org.uk
导入谷歌
导入BaseHTTPServer
导入shutil
从StringIO导入StringIO
导入urlparse

__version__ =''0.1.0'

"""
这是一个从谷歌缓存中获取网页的服务器的简单实现。

它可以让你使用google
缓存从浏览器浏览互联网。

运行此脚本,然后将浏览器代理设置设置为
localhost:8000

需要google.py(和谷歌许可证密钥)。
请参阅 http:// pygoogle。 sourceforge.net/
http://www.google。 com / apis /
"""

cached_types = [''txt'',''html'',''htm'',''shtml '',''shtm'',''cgi'',''pl'',
''py'']
google.setLicense(google.getLicense())
googlemarker ='''''< i> Google不隶属于此页面的作者,也不负责其

cont 。ENT< / I>< /字体>< /中心],[< / TD>< / TR>< /表>< / TD>< / TR>< /表> \\\
< ; hr> \ n''''''\\ n \\ n'\\ n \\ n标记符= len(googlemarker)

类googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):
server_version =" googleCache /" + __version__
cached_types = cached_types
googlemarker = googlemarker
markerlen = markerlen


def do_GET(self):
f = self.send_head() self.copyfile(f,self.wfile)
f.close()

def send_head(self):
"" GET和HEAD命令的通用代码。

这将发送响应代码和MIME标题。

返回值是文件对象(必须复制并且必须在所有情况下由调用者关闭,否则调用者将输出文件添加到输出文件中,或者
无,在这种情况下调用者没有其他任何操作。打印self.path
url = urlparse.urlparse(self.path)[2]
dotloc = url.find(''。 '')+ 1
如果dotloc和url [dotloc:]不在self.cached_typ中es:
返回无#不是缓存类型 - 甚至不尝试

thepage = google.doGetCachedPage(self.path)
headerpos = thepage.find(self。 googlemarker)
如果是标题符!= -1:#删除谷歌标题
pos = self.markerlen + headerpos
thepage = thepage [pos:]

f = StringIO(页面)

self.send_response(200)
self.send_header(" Content-type",''text / html'')
self.send_header(" ; Content-Length",str(len(thepage)))
self.end_headers()
返回f
def copyfile(self,source,outputfile):
shutil.copyfileobj(source,outputfile)

def test(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass,ServerClass)
如果__name__ ==''__ main__'':
test()
I''ve hacked together a ''GoogleCacheServer''. It is based on
SimpleHTTPServer. Run the following script (hopefully google groups
won''t mangle the indentation) and set your browser proxy settings to
''localhost:8000''. It will let you browse the internet using google''s
cache. Obviously you''ll miss images, javascript, css files, etc.

See the world as google sees it !

(This is actually an ''inventive'' short term measure to get round a
restrictive internet policy at work :-) I''ll probably put it in the
Python Cookbook as it''s quite fun (so if line lengths or indentation is
mangled here, try there). Tested on Windows XP, with Python 2.3 and IE.

# Copyright Michael Foord, 2004 & 2005.
# Released subject to the BSD License
# Please see http://www.voidspace.org.uk/documents/BSD-LICENSE.txt

# For information about bugfixes, updates and support, please join the
Pythonutils mailing list.
# http://voidspace.org.uk/mailman/list...idspace.org.uk
# Comments, suggestions and bug reports welcome.
# Scripts maintained at http://www.voidspace.org.uk/python/index.shtml
# E-mail fu******@voidspace.org.uk

import google
import BaseHTTPServer
import shutil
from StringIO import StringIO
import urlparse

__version__ = ''0.1.0''
"""
This is a simple implementation of a server that fetches web pages
from the google cache.

It lets you explore the internet from your browser, using the google
cache.

Run this script and then set your browser proxy settings to
localhost:8000

Needs google.py (and a google license key).
See http://pygoogle.sourceforge.net/
and http://www.google.com/apis/
"""

cached_types = [''txt'', ''html'', ''htm'', ''shtml'', ''shtm'', ''cgi'', ''pl'',
''py'']
google.setLicense(google.getLicense())
googlemarker = ''''''<i>Google is not affiliated with the authors of this
page nor responsible for its
content.</i></font></center></td></tr></table></td></tr></table>\n<hr>\n'''''' markerlen = len(googlemarker)

class googleCacheHandler(BaseHTTPServer.BaseHTTPRequestH andler):
server_version = "googleCache/" + __version__
cached_types = cached_types
googlemarker = googlemarker
markerlen = markerlen

def do_GET(self):
f = self.send_head()
if f:
self.copyfile(f, self.wfile)
f.close()

def send_head(self):
"""Common code for GET and HEAD commands.

This sends the response code and MIME headers.

Return value is either a file object (which has to be copied
to the outputfile by the caller unless the command was HEAD,
and must be closed by the caller under all circumstances), or
None, in which case the caller has nothing further to do.

"""
print self.path
url = urlparse.urlparse(self.path)[2]
dotloc = url.find(''.'') + 1
if dotloc and url[dotloc:] not in self.cached_types:
return None # not a cached type - don''t even try

thepage = google.doGetCachedPage(self.path)
headerpos = thepage.find(self.googlemarker)
if headerpos != -1: # remove the google header
pos = self.markerlen + headerpos
thepage = thepage[pos:]

f = StringIO(thepage)

self.send_response(200)
self.send_header("Content-type", ''text/html'')
self.send_header("Content-Length", str(len(thepage)))
self.end_headers()
return f

def copyfile(self, source, outputfile):
shutil.copyfileobj(source, outputfile)
def test(HandlerClass = googleCacheHandler,
ServerClass = BaseHTTPServer.HTTPServer):
BaseHTTPServer.test(HandlerClass, ServerClass)
if __name__ == ''__main__'':
test()





vegetax写道:

vegetax wrote:
它适用于linux上的opera和firefox,但你不能搜索
缓存谷歌!如果你能以某种方式搜索仅,那将会更有用。缓存中的
而不是直接链接。也许你可以在缓存中输入
魔法网址,例如搜索:搜索条件


感谢您的报告。我也在Windows上用firefox试过它。


是的 - 谷歌搜索结果没有被缓存!也许在谷歌域名中的任何东西都应该直接通过。这可以通过测试域并使用urllib2来获取页面来完成。


刚刚测试了以下哪个有效。


将以下两行添加到代码的开头:


import urllib2

txheaders = {''User-agent'' :''Mozilla / 4.0(兼容; MSIE 6.0;

Windows NT 5.1; SV1; .NET CLR 1.1.4322)''}


然后更改send_head方法的开头:


def send_head(self):

"""仅为此实现GET。

这会发送响应代码和MIME标题。

返回值是文件对象,或者无。

"""

print''请求:'',self.path #trackbackback到sys.stdout

url_tuple = urlparse.urlparse(self.path)

url = url_tuple [2]

domain = url_tuple [1]

如果domain.find(''。google。'')!= -1:#绕过
谷歌域名

req = urllib2.Request(self.path,None,txheaders)

return urllib2.urlopen(req)

fu ****** @ gmail.com 写道:
it works on opera and firefox on linux, but you cant search in the cached google! it would be more usefull if you could somehow search "only" in the cache instead of putting the straight link. maybe you could put a magic url to search in the cache, like search:"search terms"

Thanks for the report. I''ve also tried it with firefox on windows.

Yeah - google search results aren''t cached !! Perhaps anything in a
google domain ought to pass straight through. That could be done by
testing the domain and using urllib2 to fetch the page.

Have just tested the following which works.

Add the follwoing two lines to the start of the code :

import urllib2
txheaders = { ''User-agent'' : ''Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 1.1.4322)'' }

Then change the start of the send_head method to this :

def send_head(self):
"""Only GET implemented for this.
This sends the response code and MIME headers.
Return value is a file object, or None.
"""
print ''Request :'', self.path # traceback to sys.stdout
url_tuple = urlparse.urlparse(self.path)
url = url_tuple[2]
domain = url_tuple[1]
if domain.find(''.google.'') != -1: # bypass the cache for
google domains
req = urllib2.Request(self.path, None, txheaders)
return urllib2.urlopen(req)

fu******@gmail.com wrote:
我已经黑客攻击''GoogleCacheServer''。它基于SimpleHTTPServer。运行以下脚本(希望谷歌小组
不会破坏缩进)并将浏览器代理设置
设置为''localhost:8000''。它会让你使用
谷歌的缓存浏览互联网。显然你会错过图片,javascript,css文件等。

谷歌看到这个世界!
I''ve hacked together a ''GoogleCacheServer''. It is based on
SimpleHTTPServer. Run the following script (hopefully google groups
won''t mangle the indentation) and set your browser proxy settings to ''localhost:8000''. It will let you browse the internet using google''s cache. Obviously you''ll miss images, javascript, css files, etc.

See the world as google sees it !



[snip。 。]


[snip..]


这篇关于Python Google服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆