这就是江湖上失传已久的自动AC机

大概就是爬取codeforces的题目的答案 然后再交上去以达到刷题的目的

注意!这样会给服务器一些没有必要的压力 学术目的 别乱用
注意!这样会给服务器一些没有必要的压力 学术目的 别乱用
注意!这样会给服务器一些没有必要的压力 学术目的 别乱用

啥是codeforces

Codeforces是一家为计算机编程爱好者提供在线评测系统的俄罗斯网站。该网站由萨拉托夫国立大学的一个团体创立并负责运营—百度百科
在这个网站中 你可以阅读题目(算法题)然后上传代码,评测姬给你反馈个评测结果(AC,WA…)

这个代码主要是先登录,获取cookie,方便以后免登录提交代码(提交代码需要登录) --login函数实现
然后进入比赛界面
contest1

contest1141

因为每个比赛的题目和题号都可能有差异 所有需要请求contest的总网页来获取该contest下的所有题目–solve实现
然后就是获取AC代码cf的比赛有个特点,就是可以看别人的代码,通过post请求特定的代码,比如上面这张图就是contest1141的A题,c++11,ac的代码,然后获取这样一个表,找到任意一个AC的代码(我就找第一个)–getcode实现这就是一个AC代码
然后在把这个代码交上去就行了—uploadcode实现
cf对个人的代码有查重机制(暂时只能查完全一样的),对不同用户之间没有这个机制,
为了避免被查重 在原有的code的基础上,在后面加了个//hello然后上传代码(写过c++代码的应该知道//是注释,不会影响代码)

这里最难的地方是 请求头中’csrf_token’这个的值,这是网页为了识别爬虫而设计的大概就是系统设置个随机数,在客户端请求时发给用户(隐藏在html中),如果下次请求中不带上就返回403,访问受限(服务器知道你要干啥,但不想搭理你)在这里卡了一天,还找错方向了…
代码:

res = s.get('http://codeforces.com/enter?back=%2F')soup=BeautifulSoup(res.text,'lxml')csrf_token=soup.find(attrs={'name' : 'X-Csrf-Token'}).get('content')form_data={'csrf_token' : csrf_token,'action' : 'enter','ftaa' : '','bfaa' : '','handleOrEmail' : name,'password' : password,'remember' : []}

而且这个需要每次请求时都需要更新…

完整代码

# coding=utf-8
"""顾名思义 我是个爬虫作用: 爬取codeforces的代码并自动提交作者: 大哥
"""
import random
import re
import time
import threading
import requests
from bs4 import BeautifulSoup
from lxml import etree#用户名
name='WOSHIGEPACHONG2'
#密码
password='你以为我会告诉你吗?哈哈哈哈'user_agent = ['Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 ''Safari/534.50','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 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0','Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; ''.NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko','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)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)','Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11','Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 ''Safari/535.11','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; TencentTraveler 4.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR ''2.0.50727; SE 2.X MetaSr 1.0)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Avant Browser)','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) ''Version/5.0.2 Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) ''Version/5.0.2 Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 ''Mobile/8J2 Safari/6533.18.5','Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) ''Version/4.0 Mobile Safari/533.1','MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (''KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10','Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 ''Safari/534.13','Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile ''Safari/534.1+','Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 ''Safari/534.6 TouchPad/1.0','Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) ''AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124','Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)','UCWEB7.0.2.37/28/999','NOKIA5700/ UCWEB7.0.2.37/28/999','Openwave/ UCWEB7.0.2.37/28/999','Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999', ]
s=requests.session()
#登录
def login():agent=random.choice(user_agent)header={'User-Agent' : agent}s.headers.update(header)try:res = s.get('http://codeforces.com/enter?back=%2F')soup=BeautifulSoup(res.text,'lxml')csrf_token=soup.find(attrs={'name' : 'X-Csrf-Token'}).get('content')form_data={'csrf_token' : csrf_token,'action' : 'enter','ftaa' : '','bfaa' : '','handleOrEmail' : name,'password' : password,'remember' : []}s.post('http://codeforces.com/enter',data=form_data)except Exception as e:print('登陆失败',e)
#获取代码
def getcode(a,b) :try:res=s.get('http://codeforces.com/problemset/submit')soup=BeautifulSoup(res.text,'lxml')csrf_token=soup.find(attrs={'name' : 'X-Csrf-Token'}).get('content')data={'csrf_token' : csrf_token,'action' : 'setupSubmissionFilter','frameProblemIndex' : b,'verdictName' : 'OK','programTypeForInvoker' : 'cpp.g++11','comparisonType' : 'NOT_USED','judgedTestCount' : '',}s.post('https://codeforces.com/contest/'+a+'/status',data=data)res=s.get('https://codeforces.com/contest/'+a+'/status')links=re.findall('submission/(.+?)"',res.text)if len(links)<=0 :return Falseres2=s.get('https://codeforces.com/contest/'+a+'/submission/'+links[0])selector=etree.HTML(res2.text)out=selector.xpath('//*[@id="program-source-text"]')[0]except Exception as e:print('题号:',a+b,'获取代码失败')print(e)exit(0)return out.textdef uploadcode(a,b,code) :res=s.get('http://codeforces.com/problemset/submit')soup=BeautifulSoup(res.text,'lxml')csrf_token=soup.find(attrs={'name' : 'X-Csrf-Token'}).get('content')post_data={'csrf_token' : csrf_token,'ftaa' : '','bfaa' : '','action' : 'submitSolutionFormSubmitted','submittedProblemCode' : a+b,'programTypeId' : '42','source' : code+'//hello','tabSize' : 0,'sourceFile' : '',}res=s.post('http://codeforces.com/problemset/submit?csrf_token='+csrf_token,data=post_data)if res.status_code!=200 :print('题号:',a+b,'提交代码失败')print(res)exit(0)else:print('题号:',a+b,'AC!!!')def solve(a) :global shtml=s.get('https://codeforces.com/contest/'+a).textif not html :returnlinks=re.findall('<a href="/contest/'+a+'/problem/(.+?)"><!--',html)setlinks=set(links)links=list(setlinks)links.sort()for b in links :if len(b)<3 :uploadcode(a,b,getcode(a,b))time.sleep(2)print('solve:',a)login()
f = int(input('from:'))
for a in range(f,1145) :#solve(str(a))threading.Thread(target=solve, args=(str(a),)).start()time.sleep(60)

说说题外话,codeforces的反爬虫做的挺弱的…

关注我的cf小号 WOSHIGEPACHONG2 mua~~

震惊! 某男子一夜之间竟把codeforces题库刷穿相关推荐

  1. 获得诺贝尔奖的底层小职员 | 从来没有一个高手,是在一夜之间强大起来的

    来源:Pinterest优选 2019年初NHK的一个访谈纪录片,看哭了很多网友. "感动,这才是真正的大神啊!" 纪录片的主人公,是2002年的诺贝尔化学奖得主--田中耕一. 十 ...

  2. 一夜之间ChatGPT火遍全球,程序员的饭碗保不住了吗

    一夜之间拆的GPT火遍全球 程序员的饭碗保不住了吗 本来我不想说这话题的啊 最近几天有四五个网友私信问我 说有了拆的GPT以后 程序员是不是也失业了 等等类似的这种问题吧 所以今天我根据这个我知道的内 ...

  3. 一夜之间小米与CDR分道扬镳,背后究竟隐藏了什么?

    谁也未曾料到,就在原定的审核日到来之时,小米竟突然宣布推迟CDR发行申请.作为国内首单CDR的发行者,小米此举让外界错愕不已. 一夜之间,小米与首单CDR的发行者分道扬镳,这大起大落的背后有很多值得我 ...

  4. 楼市调侃:假如上海房价一夜之间降到800元/平米

    几天前和俩哥们聊天.说起上海芝麻开花般的房价无不咋舌.忽我提问:假如由于不可抗拒的因素,上海的房价从现在的均价8000元/平米,一夜之间暴跌至800元/平米,将出现怎样的情景? 于是,三人插上想象的翅 ...

  5. 一夜之间,「AI孙燕姿」火遍全网!

    来源:新智元 一夜之间,「AI孙燕姿」火遍全网. B站上,AI孙燕姿翻唱的林俊杰「她说」.周董「爱在西元前」.赵雷「成都」等等,让一众网友深陷无法自拔. 「冷门歌手」孙燕姿新晋成为2023年度热门歌手 ...

  6. 干的漂亮!一夜之间GPS在南海信号全无,美军只能干瞪眼

    近期的南海可谓是让美国苦思冥想,中国究竟在南海做了什么,才能让该海域一夜之间GPS信号全无,对正常航行的舰船不会造成什么影响,但却让美国看后只能干着急,毕竟美军的军事行动可是非常依赖GPS定位信号的. ...

  7. 一夜之间就能肝完的学生信息管理系统

    只要一个晚上?信息管理系统?对滴,你没有看错.就是一个晚上.如果你很闲的话,如果你还在无所事事的话,如果你还不懂基于MFC编程的话,请花一个晚上的时间(也可以花更多的时间),认真阅读这篇博客,并肝它. ...

  8. 一夜之间,几十万人失去房票!

    点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 8分钟 8月5日,杭州市房地产市场平稳健康发展领导小组办公室发布<关于 ...

  9. 如何在一夜之间获得成功:我「从无到有」的 5 年 [英文版]

    「所谓忠告就是一部自传,别无他物.」--詹姆斯 · 阿尔图切尔 把过去的想法和轶事重新拿出来写成书或者文章是很简单的.但是把你遇到的困境,以一种与他人相关的方式说出来,则是一件更加困难但却有益的事.我 ...

最新文章

  1. ob_get_contents();basename;file_get_contents用法
  2. Asp.Net异步页面处理(转)
  3. table表格的两个实现方法(怎样消除内部边框的间距)
  4. python3虚拟环境中解决 ModuleNotFoundError: No module named '_ssl'
  5. iOS的主要框架介绍
  6. ToPILImage
  7. Java集合查找Map,Java集合框架中Map接口的使用
  8. android仿qq登陆demo,runOnUiThread,Handler
  9. 拓端tecdat|R语言中使用多重聚合预测算法(MAPA)进行时间序列分析
  10. 博格和他的先锋集团创业史(3): 共同基金的先驱者
  11. 极客大学架构师训练营、区块链、数字货币、以太坊、Libra、联盟链 第28课 听课总结
  12. 真诚的CISSP备考经验
  13. web打印实现几种方法
  14. Java物联网平台后端架构构思设计
  15. c语言中scanf的用法
  16. Java桶排序LSD
  17. 吱口令生成淘宝BP抢购链接
  18. 超低频测试信号产生电路软件流程图,一种0_20Hz超低频信号发生器的设计与实现...
  19. blender使用小技巧
  20. android app 闪退的原因

热门文章

  1. 学习掘金React进阶实践指南笔记(三)玄学state
  2. FT232USB串口通信线序
  3. Android:HmacSHA1加密和文件转Base64String
  4. Ardunio开发实例-红外避障传感器
  5. Apollo星火计划学习笔记第四讲1——Apollo高精地图模块
  6. matlab三相短路电流计算程序_电力系统三相短路计算的MATLAB代码
  7. java中的监听器模式
  8. 解决ArcGIS10.1符号化里面没有显示Color Ramp颜色带
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java体育运动兴趣社区系统8bisy
  10. StarUML使用简明教程