我有这样的剧本
import mechanize
url = "http://www.globalhide.com/browse.php?u=u=http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=google.com"
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
response = br.open(url)
content = response.read()
f = open('q.html', 'w')
f.write(content)
f.close()
我需要像this这样的结果 当我从python shell运行它时,结果正确。但当我将其保存在something.py文件中并像{**}}一样运行q.html 的内容时 我的代码有什么问题?
答案 0 :(得分:2)
我认为您的代码没有任何问题。更改请求的URL会返回良好的数据。
该块正由globalhide.com自己实施。您在问题中添加的链接会提供与您附加的页面相同的页面(或多或少)。我无法确切地告诉您如何实现此热链接阻止,但它可以通过引用者标题。调查referrer spoofing可能会对您有所帮助。
修改强>
在那里跳了一下枪,引用者欺骗了。我会选择Aaron的饼干建议。
答案 1 :(得分:2)
对于该网址,我有时会获得XML,有时会在Chrome Linux中获得“无热链接”页面。第一个匹配返回同一网址的无链接页面。如果我清除我的cookie并再次访问该页面,我会得到没有热链接的图像。
此网站似乎需要Cookie。以下内容适用于您的代码。
policy = mechanize.DefaultCookiePolicy(rfc2965=True)
cj = mechanize.LWPCookieJar(policy=policy)
br.set_cookiejar(cj)
有关实施Cookie的不同方法的详细信息,请查看Mechanize Docs - Cookies。
修改1 您应该保存Cookie jar,请参阅Cookielib - Save。
编辑2 这是网站为我设置的Cookie信息:
Name: __utma
Content: 53296278.1653562620.1363413018.1311413018.1337443014.1
Domain: .globalhide.com
Path: /
Send for: Any kind of connection
Accessible to script: Yes
Created: Wednesday, May 1, 2013 6:56:58 AM
Expires: Friday, May 1, 2015 6:56:58 AM
Name: s
Content: x2tjlhb1qfidn5t1ds8kvd24p5
Domain: www.globalhide.com
Path: /
Send for: Any kind of connection
Accessible to script: Yes
Created: Wednesday, May 1, 2013 6:56:57 AM
Expires: When the browsing session ends