403使用mechanicalsoup时出错

时间:2018-01-29 17:17:18

标签: http-status-code-403 mechanicalsoup

为什么当我尝试抓住hacked.com时我会得到403,我该如何解决它? 根据diditusecloudflare.com,路上没有云雾(http://www.doesitusecloudflare.com/?url=https%3A%2F%2Fhacked.com%2Fwp-login.php) robots.txt允许任何useragent,只允许访问wp-admin登录。

>>> import mechanicalsoup
>>> browser = mechanicalsoup.StatefulBrowser()
>>> browser.get('https://google.com')
<Response [200]>
>>> browser.get('https://hacked.com')
<Response [403]>
>>> browser.get('https://hacked.com').content
b'<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor="white">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n'

1 个答案:

答案 0 :(得分:1)

正如我们在mechanicalsoup/browser.py#L106中看到的那样,️ <b>{{$product->title}}</b> ✅ <b>{{str_limit(strip_tags($product->desc), 50)}}</b> <b>{{number_format($product->price)}}</b> dollor <a href="{{config('app.url').'/upload/'. $picture}}"> Picture</a> 只是.get()的一个包装,所以让我们放弃它。

我们可以看到;只有请求才会出现问题:

requests.get()

我有一个问题,所以我删除了>>> import requests >>> response = requests.get('https://hacked.com') >>> response <Response [403]> >>> 字符串:

User-Agent

再次尝试:

>>> request = response.request
>>> request.headers
{'User-Agent': 'python-requests/2.18.4', ...}
>>> del(request.headers['User-Agent'])
>>> request.headers
{...}
>>> 

多田!看起来这是hacked试图避开某个机器人的人 - 即使他们>>> session = requests.Session() >>> session.send(request) <Response [200]> >>> 说你被允许了。

所以,回到上下文中的问题,似乎我们只需设置一个robots.txt字符串,该字符串不是User-Agent默认发送的内容。我无法通过MechanicalSoup看到取消它的方法,所以这是我找到的最佳方法:

requests
相关问题