声明:本文仅供学习参考

我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到cookie

注意:没次提交后需要休眠,否则刷评论过快会被系统发现

如果请求太快,很容易被系统发现(输入验证码)所以没用多线程

对于cookie的获取采取手动方式,也可以尝试从浏览器获取cookie,cookie需要转化为字典形式

chrome浏览器cookie的位置在:“C:\Users\Garbos\AppData\Local\Google\Chrome\User Data\Default\Cookies”,需要修改路径中的系统用户名

 # coding   :utf-8
# @Time : 2017/7/30 16:42
# @Author : Jingxiao Fu
# @File : headers_cookies.py
import random
import os
import subprocess
import sqlite3
import win32crypt
import sys header_str = '''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)''' def get_headers():
header = header_str.split('\n')
header_length = len(header)
headers = {
'Connection': 'keep-alive',
'user-agent': header[random.randint(0, header_length - 1)],
'Content-Type': 'application/x-www-form-urlencoded',
'Accept-Language': 'zh-CN,zh;q=0.8'
}
return headers def get_cookie_use_hand():
'''手动复制cookie'''
cookie = "" cookie = cookie.replace('Cookie:', '')
cookie = cookie.replace(' ', '')
cookies = cookie.split(';')
for i in range(len(cookies)):
cookies[i] = cookies[i].replace('=', ':', 1)
cookies_dict = {}
for header in cookies:
L = header.split(':', 1)
cookies_dict[L[0]] = L[1]
return cookies_dict '''从chrome浏览器获取cookie''' def get_cookie_from_chrome():
host_url = 'mooc1.xynu.edu.cn'
cookie_file_path = r"C:\Users\Garbos\AppData\Local\Google\Chrome\User Data\Default\Cookies" sql_query = "select host_key, name, encrypted_value ,value from cookies WHERE host_key='%s'" % host_url
with sqlite3.connect(cookie_file_path) as con:
cu = con.cursor()
cu.execute(sql_query)
cookies_sql = {name: win32crypt.CryptUnprotectData(encrypted_value)[1].decode() for
host_key, name, encrypted_value, value in cu.execute(sql_query).fetchall()} return cookies_sql

手动模拟几遍,发现关键的步骤,就可以实现

 # coding   :utf-8
# @Time : 2017/8/7 9:19
# @Author : Yong-life
# @File : CrawlingNetStudyRoom.py import re
import time
import requests
from headers_cookies import get_headers
from headers_cookies import get_cookie_from_chrome def get_response(url):
'''封装http请求'''
cookie = get_cookie_from_chrome()
response = requests.get(url, headers=get_headers(), cookies=cookie)
return response.text def crawling_classid(html):
'''爬取课程列表,因为可能有些可能放在了文件夹中,需要递归遍历'''
classid_list = []
pattern_classid = 'httpsClass" >[\s]*<a[\s]*href=\'(.*?)\' target="_blank" >'
classid_list.extend(re.findall(pattern_classid, html))
file_list = []
pattern_file = r'class="Mcon1img">[\s]*<input type="hidden" value="(.*?)" />'
file_list.extend(re.findall(pattern_file, html))
for file_id in file_list:
file_url = 'http://mooc1.xynu.edu.cn/visit/courses/study?isAjax=true&fileId=' + file_id
classid_list.extend(crawling_classid(get_response(file_url)))
return classid_list def send_msg(course_id, clazz_id, count):
'''发送请求,刷评论,可以修改data中的str(i)'''
url = 'http://mooc1.xynu.edu.cn/bbscircle/grouptopic/publish'
cookie = get_cookie_from_chrome()
for i in range(1, count+1):
data = (
'courseId=' + course_id + '&clazzid=' + clazz_id + '&title=' + str(i) + '&content=&type=4&files=').encode(
'utf-8')
print('send: ' + course_id + ' ' + str(i))
response = requests.post(url, data, cookies=cookie, headers=get_headers())
time.sleep(3) def manager_crawling():
url = 'http://mooc1.xynu.edu.cn/visit/courses?template=1&s=7c6b45e1ac1448adf0ff862c75c8ab3f'
html = get_response(url)
print('已进入学习空间...')
MAX_COUNT = 10
class_url_list = crawling_classid(html)
print('爬取学习空间课程列表...')
print('开始发送数据...')
for i, url in zip(range(len(class_url_list)), class_url_list):
pattern_class = r'courseId=(.*?)&clazzid=(.*?)&enc'
regx = re.search(pattern_class, url)
course_id, clazz_id = regx.group(1), regx.group(2)
send_msg(course_id, clazz_id, MAX_COUNT) print('执行完毕!') if __name__ == '__main__':
manager_crawling()

效果:

 少年,还在为学校规定的评论数发愁吗?

用cookie登录慕课网络教学中心刷评论的更多相关文章

  1. python--爬虫--利用cookie登录网络教学中心刷评论

    声明:本文仅供学习参考 这个功能终于实现了,如果请求太快,很容易被系统发现(输入验证码)所以没用多线程 对于cookie的获取采取手动方式,也可以尝试从浏览器获取cookie,cookie需要转化为字 ...

  2. 网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第二卷)

    接着上卷来分析,作为开发人员我们都知道,登录是一个想指定URL发送POST请求的过程,所以我们需要找到请求的URL,以及字段,先用一个错误账号和密码做一下尝试,如果是正确的话会直接跳转到别的页面,这样 ...

  3. urllib库利用cookie实现模拟登录慕课网

    思路 1.首先在网页中使用账户和密码名登录慕课网 2.其次再分析请求头,如下图所示,获取到请求URL,并提取出cookie信息,保存到本地 3.最后在代码中构造请求头,使用urllib.request ...

  4. python3爬虫 - 利用浏览器cookie登录

    http://blog.csdn.net/pipisorry/article/details/47980653 爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证 ...

  5. python3爬虫 - cookie登录实战

    http://blog.csdn.net/pipisorry/article/details/47948065 实战1:使用cookie登录哈工大ACM网站 获取网站登录地址 http://acm.h ...

  6. 湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18)

    湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18) 开发环境: 开发工具:VS2013,数据库:Sqlserver2012 开发语言:Asp.net MVC5 ,界面UI:jq ...

  7. JMeter学习-018-JMeter 配置元件之-HTTP信息头管理器-实现 Cookie 登录

    之前写过一篇通过[HTTP Cookie管理器]实现登录态操作的文章,使用时需要配置每个键值对(如下图所示),相对来讲配置比较繁琐.其实,我们也可通过在[HTTP信息头管理器]添加 Cookie 信息 ...

  8. 微软成立反网络犯罪中心,工作环境如美剧CSI情景

    微软在总部大楼内设立新网络犯罪中心(Cybercrime Center),旨在针对全球恶意软件.僵尸网络以及其他互联网犯罪行为进行实时追踪并予以打击.微软将“网络犯罪中心”设置在雷德蒙德总部大楼,目的 ...

  9. win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误

    win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误 解决方法如下: Step 1:打开"本地安全策略"- Wi ...

随机推荐

  1. java学习笔记之String.Split方法

    hello 大家好,好久不见,今天 我们要讨论的是java的split方法,或许你很早就知道了,但你真的知道吗? 我们来看看吧. 首先我们来看看我们最常用的split()方法也就是单个参数的方法 pu ...

  2. VS里用Sos扩展调试CLR总结

    暂时不用Windbg,用VS来调试CLR. 1) Enable unmanaged debugging 2) Load sos.dll into vs. !DumpHead -type SimpleC ...

  3. FreeSWITCH 基础

    [1]FreeSWITCH 是什么? FreeSWITCH是一个开源的电话交换平台. 世界上第一个跨平台的.伸缩性极好的.免费的.多协议的电话软交换平台. 从技术上讲,FreeSWITCH是一个B2B ...

  4. mysql-5.1.73多实例安装启动

    一.源码包下载:http://download.softagency.net/MySQL/Downloads/MySQL-5.1/ 二.编译安装 groupadd mysql useradd -r - ...

  5. ASP.NET动态网站制作(21)-- C#(4)

    前言:这节课是C#讲解的第四节课,主要围绕面向对象的三大特性展开.上节课已经把封装讲完了,这节课讲继承和多态. 内容: 1.继承:写程序的时候有些信息是公共的,可以将这些公共的信息写在父类里,增强代码 ...

  6. 在Linux先显示文件

    cat:从第一行开始显示文件内容. tac:从最后一行开始显示内容. nl:显示的时候带行号. more:一页一页显示. less:同more,可以向上翻页. head:显示文件前几行. head - ...

  7. JAVA中sleep() 和 wait() 有什么差别?

    (网上的答案:sleep是线程类(Thread)的方法,导致此线程暂停运行指定时间,将运行机会给其它线程.可是监控状态依旧保持,到时后会自己主动恢复.调用sleep不会释放对象锁. wait是Obje ...

  8. iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

    本文转载至 http://www.tuicool.com/articles/3ymMzub CSDN博客原文  http://blog.csdn.net/hmt20130412/article/det ...

  9. web.xml配置中的log4jRefreshInterval

    采用spring框架的项目如何使用log4j在spring中使用log4j,有些方便的地方, 1.动态的改变记录级别和策略,即修改log4j.properties,不需要重启web应用,这需要在web ...

  10. struts2 封装获取表单数据的方式

    一.属性封装 1.在action中设置成员变量,变量名与表单中的name属性值相同 2.生成变量的set方法 实例 获取用户输入的用户名和密码 jsp页面 java代码 二.模型驱动(常用) 1.ac ...