为什么当我尝试抓住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'
答案 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