我正在尝试使用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脚本而不是浏览器访问的事实。
如果是这样,有没有办法隐藏它?
答案 0 :(得分: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.')
答案 1 :(得分:1)
当然它是可检测的,但通常不是直接的。例如,它可以查看用户代理的行为(例如,每小时访问同一个文件)或尝试加载iframe + img + javascript来检查您是否真的是一个webbrowser。它可以提供一个必须在继续之前完成的验证码,并且有许多不同的技术可以阻止外部脚本访问。
但是如果你看一个单一的请求,就会发现它是一个发出请求的脚本要困难得多。事实上,它可以完美地模仿浏览器。只是不是背后的用户。
然而,更大的问题是,你要做的是否正确。有些网站不希望脚本访问它们。