2016-11-30 45 views
0

我试图从Indeed.com使用urllib刮取一些信息。偶尔,工作链接会重定向到招聘公司的网页。当发生这种情况时,Indeed会抛出一些关于使用不兼容的浏览器或设备的HTML,而不是继续访问重定向的页面。环顾四周后,我发现在大多数情况下,欺骗urllib的用户代理看起来像浏览器就足以解决这个问题,但这似乎并不是这种情况。Python 3网站检测到使用用户代理欺骗时的刮板

有关如何超越欺骗User-Agent的建议?是否有可能确实能够实现用户代理被欺骗,而且这是没有办法解决的?

下面的代码示例:

import urllib 
from fake_useragent import UserAgent 
from http.cookiejar import CookieJar 

ua = UserAgent() 

website = 'http://www.indeed.com/rc/clk?jk=0fd52fac51427150&fccid=7f79c79993ec7e60' 
req = urllib.request.Request(website) 
cj = CookieJar() 
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
opener.addheaders = [('User-Agent', ua.chrome)] 
response = opener.open(req) 

print(response.read().decode('utf-8')) 

感谢您的帮助!

+0

你可以尝试在无头方法中使用Selenium(使用Xvfb),它将通过实际使用浏览器(但以编程方式)“避免”浏览器的检测。 –

回答

1

这头通常工作:

HDR = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 
     'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'} 

另一种选择是使用requests包。