用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 ...
随机推荐
- Python修饰器的函数式编程(转)
From:http://coolshell.cn/articles/11265.html 作者:陈皓 Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Desi ...
- JSP 连接数据库JDBC有一定的了解
JSP 连接数据库 本章节假设您已经对JDBC有一定的了解.在开始学习JSP数据库访问前,请确保JDBC环境已经正确配置. 首先,让我们按照下面的步骤来创建一个简单的表并插入几条简单的记录: 创建表 ...
- onCreate中获得控件的大小
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC ...
- 如何通过Git命令行把代码提交到github上
1.http://www.cnblogs.com/leesf456/p/5169765.html 参考博客 背景:最近入手了mac,看见mac上的大神都是在用git命令行推代码,我很羡慕有木有,好 ...
- springMVC的注释集合
SpringMVC的工作原理 主要核心实现是DispatcherServlet. 一般来讲客户端对服务器发送请求,是由DispatcherServlet控制的,DispatcherServlet接受到 ...
- Miller-Rabin大素数测试模板
根据费马小定理: 对于素数n,a(0<a<n),a^(n-1)=1(mod n) 如果对于一个<n的正整数a,a^(n-1)!=1(mod n),则n必不是素数. 然后就可以随机生成 ...
- web 文件下载
response.reset(); response.setContentType("octets/stream"); response.addHeader("Conte ...
- spring boot的对象注入
1 需求 现在我们的项目中需要引入一个java类库,我想要很方便的使用该类库中的一个类,并且我想要创建这个类的一个单例对象.然后可以很方便的在各个模块中用@AutoWired进行对象注入. 比如一个配 ...
- Java基础 - 变量的定义和使用
变量定义 public class Main { public static void main(String[] args) { // 定义byte类型的变量 byte b = 10; System ...
- [note]树链剖分
树链剖分https://www.luogu.org/problemnew/show/P3384 概念 树链剖分,是一种将树剖分成多条不相交的链的算法,并通过其他的数据结构来维护这些链上的信息. 最简单 ...