你好。我有一个问题,在这种情况下如何点击“我不是机器人”复选框?每个请求的键值都不同。我是否需要以某种方式解析并发送连接请求或如何?您需要通过单击复选框进行登录。
import requests
from bs4 import BeautifulSoup as Bs
def gold_buy():
session = requests.Session()
arena = session.get('https://mrush.mobi')
text = Bs(arena.content, 'html.parser')
fresh = text.find("input", type='checkbox')
d=(fresh['name'])
print(d)
s = session.post('https://mrush.mobi/login',{'name': 'name', 'password': 'pass', d : ''})
print (s)
g = session.get("https://mrush.mobi/christmasCollection?r=815")
soup = Bs(g.text, 'html.parser')
quest_status = soup.find_all('div', class_='wr8')
for status in quest_status:
print(status)
def main():
gold_buy()
if __name__ == '__main__':
main()
没有
requests
办法点击它,因为这个库处理请求,而不是模拟像selenium这样的浏览器,你可以在其中点击一些东西。但是让我们弄清楚这个复选框的作用是什么。
如果您查看一个成功的 POST 请求,您可以看到它传输到 Payload ...类似于类的东西。让我们看看复选框有什么类?就是这样,没错就是他。
再一次,您不能单击请求中的任何内容,但您的单击会以某种方式影响后续请求。在这种情况下,如果设置了 ✅,则采用输入类。
在这里似乎一切都很简单,我们解析输入,获取复选框类并享受生活。
但不,这样的保护太简单了,所以这款游戏的创作者更进一步,制作了……12 个复选框。是的,是的,有很多,在页面上是看不出来的,因为它们的样式不同。如果您查看开发人员控制台,乍一看,这些样式没有什么不同,只是类发生了变化。并且每次刷新页面时都会随机生成这些类。好吧,我对开发人员表示敬意,结果证明这是对小学生的有趣防御。
但是,没有什么是不可能的,
div
它站在<style>
想要的人面前,隐藏伪复选框的所有魔法都发生在它身上。因此,我们采用所有样式,过滤那些隐藏的样式并获得我们需要的样式。通过观察,原来不必要的包含以下之一:
我们将过滤它们。
下一步是什么?然后有两个必要的复选框,第一个用于“开始游戏”,第二个用于“登录”。根据我们在做什么,我们添加到请求正文中,并且不要忘记添加标头
Content-Type
,顺便说一句,在问题中没有观察到‥结论:
好吧,就是这样,复选框起作用了,作为响应,我们得到一个新的“返回家园”屏幕,其中玩家被草原狼攻击。
对于授权,选择第二个复选框,一切都会成功。