一个发表很多评论的机器人
#python #bot #requests

在这篇文章中,我想向您展示如何登录网站,然后在帖子上发表评论...
等等,什么?
我知道你已经可以做到了。哈哈。但是目标是用python做到这一点。

实际上,我们希望有一个登录网站的机器人,然后根据您的需求多次评论帖子。

很重要!我们编写的代码在每个网站中并不总是相同的,但要点是学习如何实施该理论。

要开始,您应该选择一个简单的网站来实施此操作。我选择了 ctflearn.com 的例子。


第一步,安装和导入请求 python库。

正如我在本文前面提到的,首先我们应该登录,然后对特定帖子发表评论。因此,我们现在应该计划使用机器人登录。

我想您已经注册到该网站(有一个帐户),以便我们可以正确登录。

要登录然后评论,我们需要在登录后保留会话。所以我会说:

import requests

with Requests.Session() as r:
     # The operation goes here

要登录,我们需要识别该页面上的所有输入并将其填充以将其发送到服务器。

页面上的输入可能仅由用户名/电子邮件和密码组成。但是,关键是要填写这些输入并将数据发送到服务器一次,然后转到Dev Tools中的网络选项卡,
选择左栏上与该登录页面相关的文件,然后在右侧选择“有效负载”选项卡。

sending_values_login

,您会看到(或可能不会)其他一些隐藏的输入,例如CSRF令牌,也应该由Bot填充。

因此,在这里以及在许多其他网站上,除了登录信息之外,我们还必须发送CSRF令牌。
为此,我的方式是,使用每个请求,获取该页面的源代码并找到CSRF输入值的索引,然后从页面上切下并在其他值中发送该页面。

with Requests.Session() as r:
     source = r.get('https://ctflearn.com/user/login').text

要找到CSRF令牌的索引,我们可以找到此隐藏输入 name 的索引(因为它在源代码中主要是唯一的),然后接收主CSRF代币。

with Requests.Session() as r:
     source = r.get('https://ctflearn.com/user/login').text
     token = source[source.rfind("csrf_token") + 33: source.rfind("csrf_token") + 124]

因此,我们得到了输入名称索引(此处 csrf_token ),并将其加上33(令牌的第一个索引),我们将其切成薄片,通过总结CSRF Token的末尾。使用124(计算CSRF长度)。

注意!您来自不同网站的数字不同。

和登录的最后一步是将这些数据发送到服务器。

with Requests.Session() as r:
     source = r.get('https://ctflearn.com/user/login').text
     token = source[source.rfind("csrf_token") + 33: source.rfind("csrf_token") + 124]
    payload = {
       'csrf_token' : token,
       'identifier' : '3dot',
       'password' : '123456'
    }
    login = r.post('https://ctflearn.com/user/login', data=payload)

有效负载变量的键应为其输入的名称,我们发布数据的URL应该是网络选项卡中的URL。
登录后,我们应该重复此过程以对帖子发表评论。

在登录变量下,我们应该写:

commentSource = r.get('https://ctflearn.com/challenge/228')
commentToken = commentSource[commentSource.index('name="csrf_token"') + 39 : commentSource.index('name="csrf_token"') + 130]
commentPayload = {
   'markdown' : 'Your message!',
   'csrf_token' : commentToken,
}
comment = r.post('https://ctflearn.com/challenge/228/comment', data=commentPayload)

最后,您的代码应该看起来像这样。

import requests
with Requests.Session() as r:
     source = r.get('https://ctflearn.com/user/login').text
     token = source[source.rfind("csrf_token") + 33: source.rfind("csrf_token") + 124]
    payload = {
       'csrf_token' : token,
       'identifier' : '3dot',
       'password' : '123456'
    }
    login = r.post('https://ctflearn.com/user/login', data=payload)
    commentSource = r.get('https://ctflearn.com/challenge/228')
    commentToken = 
    commentSource[commentSource.index('name="csrf_token"') + 39 : 
    commentSource.index('name="csrf_token"') + 130]
    commentPayload = {
       'markdown' : 'Your message!',
       'csrf_token' : commentToken,
   }
   comment = r.post('https://ctflearn.com/challenge/228/comment', 
   data=commentPayload)

通过此代码,您可以轻松地制作一个登录网站的机器人,然后在帖子上发表评论。

您也可以将用于循环来评论您想要的多次。


我希望这篇文章能帮助您,有关更多信息,您可以观看this video