用cookie登录慕课网络教学中心刷评论
声明:本文仅供学习参考
我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到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登录慕课网络教学中心刷评论的更多相关文章
- python--爬虫--利用cookie登录网络教学中心刷评论
声明:本文仅供学习参考 这个功能终于实现了,如果请求太快,很容易被系统发现(输入验证码)所以没用多线程 对于cookie的获取采取手动方式,也可以尝试从浏览器获取cookie,cookie需要转化为字 ...
- 网站爬取-案例四:知乎抓取(COOKIE登录抓取个人中心)(第二卷)
接着上卷来分析,作为开发人员我们都知道,登录是一个想指定URL发送POST请求的过程,所以我们需要找到请求的URL,以及字段,先用一个错误账号和密码做一下尝试,如果是正确的话会直接跳转到别的页面,这样 ...
- urllib库利用cookie实现模拟登录慕课网
思路 1.首先在网页中使用账户和密码名登录慕课网 2.其次再分析请求头,如下图所示,获取到请求URL,并提取出cookie信息,保存到本地 3.最后在代码中构造请求头,使用urllib.request ...
- python3爬虫 - 利用浏览器cookie登录
http://blog.csdn.net/pipisorry/article/details/47980653 爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证 ...
- python3爬虫 - cookie登录实战
http://blog.csdn.net/pipisorry/article/details/47948065 实战1:使用cookie登录哈工大ACM网站 获取网站登录地址 http://acm.h ...
- 湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18)
湖南师范大学计算机基础课网络教学平台 版本 V2.0(2017.9.18) 开发环境: 开发工具:VS2013,数据库:Sqlserver2012 开发语言:Asp.net MVC5 ,界面UI:jq ...
- JMeter学习-018-JMeter 配置元件之-HTTP信息头管理器-实现 Cookie 登录
之前写过一篇通过[HTTP Cookie管理器]实现登录态操作的文章,使用时需要配置每个键值对(如下图所示),相对来讲配置比较繁琐.其实,我们也可通过在[HTTP信息头管理器]添加 Cookie 信息 ...
- 微软成立反网络犯罪中心,工作环境如美剧CSI情景
微软在总部大楼内设立新网络犯罪中心(Cybercrime Center),旨在针对全球恶意软件.僵尸网络以及其他互联网犯罪行为进行实时追踪并予以打击.微软将“网络犯罪中心”设置在雷德蒙德总部大楼,目的 ...
- win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误
win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误 解决方法如下: Step 1:打开"本地安全策略"- Wi ...
随机推荐
- hibernate 注解之 SequenceGenerator
hibernate 注解之 SequenceGenerator https://blog.csdn.net/zgf19930504/article/details/54694807 JPA @Id 和 ...
- 文件大小转换(b,kb,M,GB/TB)
//转换单位 setupSize(1111111111111); function setupSize($fileSize) { $size = sprintf("%u", $fi ...
- pycharm的安装和破解
前提: 为了学习爬虫,单独下载了一个pycharm编辑器,所以就有了这篇文章,和PHPstorm的安装和破解及其类似, 如有想了解PHPstorm的安装破解可参考我的另一篇博文:http://www. ...
- 使用CSDN CODE来存放OPENSTACK位于GITHUB上的源代码
use CSDN CODE to pull openstack codes 2014-11-20 Author:Hyphen 问题 直接从GITHUB上获代替码,常常是没保障,特别是用DEVSTACK ...
- [转]springmvc常用注解标签详解
1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...
- vue介绍和简单使用
Vue是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易 ...
- 我的Android进阶之旅------>HTTP Header 详解
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应.就整个网络资源传 ...
- 15.Django添加一个功能模块的步骤(和SpringMVC类比)
这里介绍如何在Django里新建一个模块,这个例子还是最简单的例子 通过浏览器访问 http://localhost:8000/hello/然后返回一个欢迎页 我是做java web出身的,这里用py ...
- Nodejs课堂笔记-第四课 Dynamodb为何物
本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 我喜欢带着目标来学习新知识.因此学习nodejs过程中,不喜欢只看枯燥的语法 ...
- python学习-3.一些常用模块用法
一.time.datetime 时间戳转化为元组 1 >>> time.localtime() 2 time.struct_time(tm_year=2016, tm_mon=8, ...