如何伪造在 Python 请求/beautifulsoup 中启用的 javascript

Posted

技术标签:

【中文标题】如何伪造在 Python 请求/beautifulsoup 中启用的 javascript【英文标题】:How to fake javascript enabled in Python requests/beautifulsoup 【发布时间】:2016-01-01 11:01:57 【问题描述】:

我正在尝试抓取一个网站,该网站返回一条错误消息,指出您的 js 已被禁用,并且您可能是机器人。我试图在网络浏览器中看到相同的行为,是的,相同的响应,但是如果启用了 javascript,它不会影响原始响应,我的意思是原始响应不依赖于 JS。

所以我在想是否可以告诉 web/http 服务器我的 JS 已启用并且我不是 BOT。 这在 Python 请求库或任何其他 Python 库中是否可行?

是的,我设置了 User-Agent 标头,甚至所有其他标头,例如 hostlanguageconnection

【问题讨论】:

页面是否正在执行一些脚本,告诉它 JavaScript 已禁用?没有多少标题会绕过的东西。 @MikeMcMahon:delhi.quikr.com/Bikes-Scooters/w264 如果我禁用 js,它会返回一些消息。 【参考方案1】:

如果站点只是通过执行一些js来检查javascript是否可以执行,使用selenium获取页面,然后使用BeautifulSoup解析selenium获取的页面。

from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://your-site/url')

html = driver.page_source
soup = BeautifulSoup(html)
...

【讨论】:

以上是关于如何伪造在 Python 请求/beautifulsoup 中启用的 javascript的主要内容,如果未能解决你的问题,请参考以下文章

Python之路67-防CSRF跨站请求伪造

如何解决跨站点请求伪造

自动化运维Python系列之Django CSRF跨站请求伪造中间件

#yyds干货盘点#Python - 爬虫_请求伪造

Python-flask跨站请求伪造和跨站请求保护的实现

python post请求伪造登陆 浏览器抓包