Python 如何在抓取时绕过Mod_安全性

Python 如何在抓取时绕过Mod_安全性,python,python-3.x,web-scraping,beautifulsoup,python-requests,Python,Python 3.x,Web Scraping,Beautifulsoup,Python Requests,我尝试使用BeautifulSoup和requests模块运行此Python脚本: from bs4 import BeautifulSoup as bs import requests url = 'https://udemyfreecourses.org/ headers = {'UserAgent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193

我尝试使用BeautifulSoup和requests模块运行此Python脚本:

from bs4 import BeautifulSoup as bs
import requests

url = 'https://udemyfreecourses.org/
headers = {'UserAgent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'
}
soup = bs(requests.get(url, headers= headers).text, 'lxml')
但当我发送这条线路时:

print(soup.get_text())
它不会刮取文本数据,而是返回以下输出:

Not Acceptable!Not Acceptable!An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.
我甚至在请求网页时使用了标题,因此它看起来像一个普通的导航器,但我仍然收到阻止我访问真实网页的消息

注意:该网页直接在导航器上运行得很好,但当我试图抓取它时,它不会显示太多信息

除了我在标题中使用的方法之外,还有其他方法可以从网站获得完全有效的请求,并绕过名为Mod_security的安全性吗


任何帮助都会非常有用,谢谢。

编辑:用户代理中的破折号非常重要

按照这个答案

您的用户代理就是问题所在。这个用户代理为我工作


另外:您的ip现在可能已被阻止:D

编辑:必须在“用户代理”中添加破折号

按照这个答案

您的用户代理就是问题所在。这个用户代理为我工作


另外:您的ip现在可能已被阻止:D

ModSecurity是一个web应用程序防火墙,可以根据规则进行配置,它足够聪明,不会告诉您哪个规则被击中而拒绝您的流量。我猜在你的情况下,网站想告诉你,它不喜欢被刮。ModSecurity是一个web应用程序防火墙,可以根据规则进行配置,它足够聪明,不会告诉你哪个规则被击中而拒绝你的流量。我猜在你的情况下,该网站想告诉你,它不喜欢被刮。那么,它真的是关于MacOS vs Linux,这是不可能的吗?或者用户代理确实需要破折号?很可能是后者。我也没听清楚。我刚试了另一个,因为少了破折号。试试看!非常感谢大家,这真的是关于MacOS vs Linux的吗?这不太可能?或者用户代理确实需要破折号?很可能是后者。我也没听清楚。我刚试了另一个,因为少了破折号。试试看!非常感谢大家
headers = {
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0',
}