0

我正在尝试使用 urllib2 库阅读网站。这是我的脚本:

import urllib2

# Get a file-like object for the Python Web site's home page.

def wikitranslate(word):
    translation = ''
    pageURL = ''
    opener = urllib2.build_opener()
    f = opener.open("http://fr.wikipedia.org/w/api.php?action=opensearch&search=" + re.sub(' ', '%20', word.rstrip()))
    # Read from the object, storing the page's contents in 's'.
    s = f.read()

我想知道服务器如何接收这些请求,以及它是否可以识别出它是由 python 脚本而不是通过浏览器访问的事实。

如果是这样,有没有办法隐藏它?

4

2 回答 2

2

url 请求标头中的 User-Agent 字段向 Web 服务器描述了您用于访问该站点的浏览器和系统,因此隐藏或将自己标识为 python 脚本请求的最佳方法是更改​​该字段。

request = urllib2.Request(url,None)
request.add_header('User-Agent','Python Script') # Or 'Not a python script'

默认情况下,此字段在使用时留空urllib2

所以如果你想隐瞒你的经纪人干脆不要申报,或者你可以强行声明它是骗人的

request.add_header('User-Agent','None of your business.')
于 2012-04-23T17:44:36.003 回答
1

当然它是可以检测到的,但通常不是直接检测到的。例如,它可以查看用户代理的行为(例如,每小时访问同一个文件)或尝试加载 iframe+img+javascript 以检查您是否真的是网络浏览器。它可能会显示一个验证码,您必须在继续之前完成该验证码,并且有许多不同的技术可以防止外部脚本访问。

但是,如果您查看一个请求,则很难检测到它是发出请求的脚本。事实上,完全模仿浏览器是可能的。只是不是它背后的用户。

然而,更大的问题是你正在尝试做的事情是否正确。有些网站不希望脚本访问它们是有原因的。

于 2012-04-23T17:45:18.217 回答