即使在更改标头和 IP 之后,验证码也会使用请求。我是如何被跟踪的?
Posted
技术标签:
【中文标题】即使在更改标头和 IP 之后,验证码也会使用请求。我是如何被跟踪的?【英文标题】:Captcha using requests even after changing headers and IP. How am I being tracked? 【发布时间】:2019-05-29 10:12:26 【问题描述】:我正在尝试从 xyz 抓取一些文章但是,在抓取一定次数后,会出现验证码。
但是,我遇到了重大问题。
我正在使用from fake_useragent import UserAgent
来随机化我的标题。
我在请求之间使用随机睡眠时间
一旦出现验证码,我将使用 *** 更改 IP 地址。但是,一旦我的 IP 地址出现,验证码仍然会出现。
这也很奇怪,因为当验证码出现在请求响应中时,验证码不会出现在浏览器中。
所以,我认为按标题是错误的。
我在获取这个请求时关闭了 js 和 cookie,因为有了 cookie 和 js,有明显的信息表明网站正在跟踪我。
headers =
"authority": "seekingalpha.com",
"method": "GET",
"path": "/article/4230872-dillards-still-room-downside",
"scheme": "https",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"accept-encoding": "gzip, deflate, br",
"accept-language": 'en-US,en;q=0.9',
"upgrade-insecure-requests": "1",
"user-agent": RANDOM
这与网站使用的内容接近:他们添加
"cache-control": "max-age=0",
"if-none-match": 'W/"6f11a6f9219176fda72f3cf44b0a2059"',
这对我的研究是 etags,用于 carching,可用于跟踪人员。 'W/...'
会更改每个请求。
另外,当我使用wkhtmltopdf 将屏幕打印为 pdf 时,我从未出现过验证码。我也尝试过使用更糟糕的硒。此外,我尝试过使用代理,如 here 所示。
所以肯定有办法做到这一点。但是,我没有正确地做到这一点。有谁知道我做错了什么?
编辑:
会话似乎不起作用
随机标题似乎不起作用
随机睡眠似乎不起作用
我可以使用我的 *** 访问网页。即使使用请求出现验证码,浏览器中的网站上也没有验证码。
硒不起作用。
我真的不想为解决验证码的服务付费。
我认为问题在于我没有很好地模仿浏览器。
【问题讨论】:
您确定您的 ***/代理正在被使用吗?另外,您使用的是requests
会话还是直接请求?
是的,正在使用 ***。使用requests.get("http://httpbin.org/ip")
进行检查。
好 :) 可能有多种原因.. 一些网站从常见的 *** IP 地址接收大量流量并将其视为潜在威胁。如果您使用代理(不是 ***),某些代理服务器不是匿名的,它们会在请求中传递您的实际 IP 地址。此外,某些网站可能会标记假用户代理(如果它们用于旧浏览器或不是真正的用户代理)。我正在测试您发布的网站(SeekingAlpha),看看我是否也收到了验证码。我会回复你的:)
【参考方案1】:
要确定被阻止并面临验证码的确切原因并不容易。以下是一些想法:
*** 和代理
有时,Captcha 服务(在本例中为 Google)可能会将常见的 *** IP 地址列入黑名单并将其视为潜在威胁,因为很多人都在使用它们并且他们产生大量流量。
有时,代理服务器(尤其是免费的)不是匿名的,可以在请求标头(特别是 X-Forwarded-For 标头)中发送您的实际 IP 地址
请求标头
您的请求中有某些重要的标头。让您的请求看起来合法的最简单方法是使用浏览器“开发者工具”中的“网络”选项卡,然后复制浏览器发送的所有标头。
重要的标题是referer
。虽然网站可能会或可能不会检查它,但将其与网站页面(或主页)之一的 URL 放在一起会更安全:
referer: https://seekingalpha.com/
超时和会话
尝试增加请求之间的超时时间。几秒钟应该是合理的。
最后,尝试在requests
中使用session
对象。他们自动维护 cookie 并跨多个请求更新referer
,以模拟真实用户浏览网站。我发现它们在克服抓取保护方面最有帮助。
验证码
最后的办法是使用服务来破解验证码。有许多在线服务(主要是付费)可以做到这一点。一个流行的是 DeathByCaptcha。请记住,您可能违反了网站的使用条款,我不建议这样做:)
【讨论】:
这不是我的情况。使用我的 ***,我可以打开它而不会被阻止。我真的不想给我们提供验证码服务。另外,有了tor,我可以很好地使用该网站。我确信有办法做到这一点,因为该页面可以下载为 pdf 而不会被阻止。 关闭或打开cookies?因为如果您的 cookie 开启并且服务可以检测到您是“回访”访问者,您将不会被 *** 阻止。尝试在私人浏览器窗口中打开 URL。 另外,澄清一下,这是受验证码保护的 URL:seekingalpha.com/articles?page=10333。另一个 URL(实际文章)打开没有问题。 抱歉,我编辑了帖子。应该是“/article/4230872-dillards-still-room-downside” 哦,我明白了。该网址工作正常。我想这可能是另一个原因。您的请求标头中有referer
吗?以上是关于即使在更改标头和 IP 之后,验证码也会使用请求。我是如何被跟踪的?的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使在指定返回 - 后台线程到主线程问题后代码也会执行?