在这篇文章中,我想向您展示如何登录网站,然后在帖子上发表评论...
等等,什么?
我知道你已经可以做到了。哈哈。但是目标是用python做到这一点。
实际上,我们希望有一个登录网站的机器人,然后根据您的需求多次评论帖子。
很重要!我们编写的代码在每个网站中并不总是相同的,但要点是学习如何实施该理论。
要开始,您应该选择一个简单的网站来实施此操作。我选择了 ctflearn.com 的例子。
第一步,安装和导入请求 python库。
正如我在本文前面提到的,首先我们应该登录,然后对特定帖子发表评论。因此,我们现在应该计划使用机器人登录。
我想您已经注册到该网站(有一个帐户),以便我们可以正确登录。
要登录然后评论,我们需要在登录后保留会话。所以我会说:
import requests
with Requests.Session() as r:
# The operation goes here
要登录,我们需要识别该页面上的所有输入并将其填充以将其发送到服务器。
页面上的输入可能仅由用户名/电子邮件和密码组成。但是,关键是要填写这些输入并将数据发送到服务器一次,然后转到Dev Tools中的网络选项卡,
选择左栏上与该登录页面相关的文件,然后在右侧选择“有效负载”选项卡。
,您会看到(或可能不会)其他一些隐藏的输入,例如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。