├── url.txt ├── recon_domains └── files │ ├── domain_js.txt │ └── domains_js.txt ├── targets.txt ├── httpx.exe ├── hakrawler.exe ├── README.md ├── rules.txt └── aljcscan.py /url.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /recon_domains/files/domain_js.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /targets.txt: -------------------------------------------------------------------------------- 1 | https://baidu.com/ -------------------------------------------------------------------------------- /recon_domains/files/domains_js.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /httpx.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pant0m/aljcscan/HEAD/httpx.exe -------------------------------------------------------------------------------- /hakrawler.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pant0m/aljcscan/HEAD/hakrawler.exe -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AljcScan 2 | 3 | python3实现检查网页中的暗链 4 | 5 | 原理:通过爬虫获取网页中的URL链接,后进行访问对返回的数据包进行关键字匹配,如果匹配到了就会保存相关的网址匹配到的关键字。 6 | 7 | 语雀blog:https://www.yuque.com/pantom/web/slxx0i399r654bla?# 8 | 9 | # 更新 10 | ## 1 selenium请求 11 | 然后主动发包测试发现返回的是404,应该是网站做了防护,之前使用的是requests 数据包,如果其他网站校验了其他请求包那么就会很难搞。 12 | 于是用了selenium 模拟浏览器请求,但是速度要慢,消耗的资源要多-后面在优化吧。 13 | 14 | 测试效果 15 | 16 | 更新以前: 17 | 18 | ![image](https://user-images.githubusercontent.com/118233720/204705116-b61d8525-f452-452a-ab65-2e278e98844f.png) 19 | 20 | 更新后: 21 | 22 | ![image](https://user-images.githubusercontent.com/118233720/204705103-56fae1bf-f87b-4e3f-bf6c-3e0434d48b08.png) 23 | 24 | ## 2.报告输出 25 | 如果是外链查出来还要去找对应扫描的目标网站,稍微优化了一下 26 | 27 | 28 | ## 关键字 29 | 30 | 自己可以根据想要检查的内容在根目录的rules.txt里面添加 31 | 32 | ![image](https://user-images.githubusercontent.com/118233720/204189237-04028bf8-93d6-48d9-968a-02c92a48251b.png) 33 | 34 | 35 | ### 前置条件 36 | 需要安装chrome浏览器 37 | 38 | ## 脚本使用 39 | 参数: 40 | ``` 41 | python39.exe .\aljcscan.py -h 42 | usage: aljcscan.py [-h] [--targets TARGETS] [--files FILES] [--outname OUTNAME] [--Thread THREAD] [--aljc ALJC] 43 | [--aljcall ALJCALL] 44 | 45 | Process some integers. 46 | 47 | optional arguments: 48 | -h, --help show this help message and exit 49 | --targets TARGETS information gathering for SubDomain 50 | --files FILES Save subDomain info to Files 51 | --outname OUTNAME Save outname 52 | --Thread THREAD Thread 53 | --aljc ALJC Scan for all sensitive words 54 | --aljcall ALJCALL Scan for sensitive words 55 | ``` 56 | 57 | ### --targets 58 | 59 | 指定目标 60 | 61 | ``` 62 | --targets targets,txt 63 | ``` 64 | 65 | ### --Thread 66 | 67 | 线程 68 | 69 | ``` 70 | --Thread 20 71 | ``` 72 | 73 | ### --aljc 74 | 75 | 默认只检测当前目标网页的返回数据 76 | 77 | ``` 78 | --aljc True 79 | ``` 80 | 81 | ### --aljcall 82 | 83 | ``` 84 | --aljcall True 85 | ``` 86 | 87 | ## 使用示例 88 | 89 | ### 检查当前的网页(不爬虫) 90 | 91 | ``` 92 | python39.exe .\aljcscan.py --targets .\targets.txt --aljc True 93 | ``` 94 | ![image](https://user-images.githubusercontent.com/118233720/204189349-f5b995b4-7ce1-4cd5-9fd6-d0261294b0ef.png) 95 | 96 | 97 | 98 | ### 爬虫各个URL后进行检查 99 | 100 | ``` 101 | python39.exe .\aljcscan.py --targets .\targets.txt --aljcall True --Thread 20 102 | ``` 103 | ![image](https://user-images.githubusercontent.com/118233720/204189370-3394e9c3-aaaa-41d2-9725-c0d90c66717f.png) 104 | 105 | 106 | ## 输出 107 | 108 | 输入到当前目录 result.txt 109 | 110 | 有一些相关的网站会误报需要自己识别一下。比如下面百度健康,匹配到一些敏感关键字,彩票网站会匹配到一些博彩相关。 111 | 112 | 113 | 114 | ## 参考 115 | 116 | https://github.com/projectdiscovery/katana 117 | 118 | https://github.com/hakluke/hakrawler 119 | 120 | https://github.com/projectdiscovery/httpx 121 | 122 | DC_find 链接找不到了 123 | -------------------------------------------------------------------------------- /rules.txt: -------------------------------------------------------------------------------- 1 | 北京赛车 2 | BTi体育 3 | 多彩奇利 4 | 永利国际 5 | 新浪彩票 6 | 亚博 7 | 万博 8 | 北京pk 9 | 竞彩 10 | 博彩 11 | 购彩 12 | 太阳城 13 | 彩票 14 | 网赚 15 | 投注 16 | 开奖 17 | 好彩 18 | 大乐透 19 | 皇冠娱乐 20 | 赛车app 21 | 计划app 22 | 分赛车 23 | 亚洲集团 24 | 亚洲杯 25 | 欧洲杯 26 | 老虎机 27 | 水果机 28 | 百家乐 29 | 维加斯 30 | 威尼斯人 31 | 真人娱乐 32 | 真人游戏 33 | 真人现金 34 | 真人在线 35 | 在线开户 36 | 现金棋牌 37 | 亿濠扑克 38 | 银河国际 39 | 国际娱乐 40 | 娱乐国际 41 | 澳门博彩 42 | 国际官网 43 | 国际客服 44 | 在线娱乐 45 | 快3 46 | 快三 47 | 分分彩 48 | 时时彩 49 | 龙虎 50 | 澳门银河 51 | 新澳门 52 | 夜场 53 | 同城交友 54 | 约炮 55 | 宝盈娱乐 56 | 皇冠足球 57 | 皇冠篮球 58 | 赛事预测 59 | 足球赛事 60 | 篮球赛事 61 | 澳门新濠天地 62 | 体育在线 63 | 电竞竞猜 64 | 环亚 65 | 网赌 66 | 赌球 67 | 赌足球 68 | 赌篮球 69 | 赌博网站 70 | 赌博网址 71 | 赌场网站 72 | 赌场网址 73 | 开心飞鹰 74 | 游戏官网 75 | 新葡京 76 | 贵宾会 77 | 马会 78 | 六合彩 79 | 一肖 80 | 乐天堂 81 | bet365 82 | 体育首页 83 | 体育官网 84 | 三级片 85 | 岛国 86 | 人体艺术 87 | 黄色视频 88 | 黄色电影 89 | 黄色小说 90 | 黄色片 91 | 乱人 92 | 乱伦 93 | 人人看 94 | 人人日 95 | 人人曰 96 | 一本道 97 | 东京热 98 | 加勒比 99 | 91国产 100 | 国产自拍 101 | 狠狠 102 | 性爱 103 | 撸 104 | 夜上海 105 | 老湿机 106 | 老司机 107 | 桑拿 108 | 快播 109 | 找小姐 110 | 91pron 111 | p站 112 | pronhub.com 113 | 赌博 114 | 威尼斯 115 | 现金网 116 | 大赢家 117 | 地下钱庄 118 | 阿波罗网 119 | 曾道人 120 | 葡京 121 | 线上娱乐 122 | 赌波 123 | 博菜 124 | 同花顺 125 | 太阳城集团 126 | 亚洲国际 127 | 皇朝国际 128 | 香港六合 129 | 香港最快开奖 130 | 最淫官员 131 | 寻找林昭的灵魂 132 | 讨伐中宣部 133 | 大赦国际 134 | 灭共 135 | 64惨案 136 | 64时期 137 | 64运动 138 | 北京风波 139 | 人体炸弹 140 | 人肉炸弹 141 | 江戏子 142 | 江蛤蟆 143 | 爱女人 144 | 爱液 145 | 按摩棒 146 | 拔出来 147 | 爆草 148 | 暴干 149 | 暴奸 150 | 暴乳 151 | 爆乳 152 | 暴淫 153 | 被操 154 | 被插 155 | 被干 156 | 逼奸 157 | 仓井空 158 | 插暴 159 | 操逼 160 | 操黑 161 | 操烂 162 | 肏你 163 | 肏死 164 | 操死 165 | 操我 166 | 厕奴 167 | 插比 168 | 插b 169 | 插逼 170 | 插进 171 | 插你 172 | 插我 173 | 插阴 174 | 潮吹 175 | 潮喷 176 | 成人电影 177 | 成人论坛 178 | 成人色情 179 | 成人网站 180 | 成人文学 181 | 成人小说 182 | 艳情小说 183 | 成人游戏 184 | 吃精 185 | 赤裸 186 | 抽插 187 | 扌由插 188 | 抽一插 189 | 春药 190 | 大力抽送 191 | 荡妇 192 | 荡女 193 | 盗撮 194 | 多人轮 195 | 发浪 196 | 放尿 197 | 肥逼 198 | 粉穴 199 | 封面女郎 200 | 风月大陆 201 | 干死你 202 | 干穴 203 | 肛交 204 | 肛门 205 | 龟头 206 | 裹本 207 | 国产av 208 | 好嫩 209 | 豪乳 210 | 黑逼 211 | 后庭 212 | 后穴 213 | 虎骑 214 | 换妻俱乐部 215 | 黄片 216 | 几吧 217 | 鸡吧 218 | 鸡巴 219 | 鸡奸 220 | 集体淫 221 | 奸情 222 | 叫床 223 | 脚交 224 | 精液 225 | 就去日 226 | 巨屌 227 | 菊花洞 228 | 菊门 229 | 巨奶 230 | 巨乳 231 | 菊穴 232 | 开苞 233 | 口爆 234 | 口活 235 | 口射 236 | 口淫 237 | 狂操 238 | 狂插 239 | 浪逼 240 | 浪妇 241 | 浪叫 242 | 浪女 243 | 狼友 244 | 聊性 245 | 流淫 246 | 铃木麻 247 | 凌辱 248 | 漏乳 249 | 露b 250 | 乱交 251 | 轮暴 252 | 轮奸 253 | 裸陪 254 | 买春 255 | 美逼 256 | 美少妇 257 | 美腿 258 | 美穴 259 | 美幼 260 | 秘唇 261 | 迷奸 262 | 密穴 263 | 蜜穴 264 | 蜜液 265 | 摸奶 266 | 摸胸 267 | 母奸 268 | 奈美 269 | 奶子 270 | 男奴 271 | 内射 272 | 嫩逼 273 | 嫩女 274 | 嫩穴 275 | 捏弄 276 | 女优 277 | 炮友 278 | 砲友 279 | 喷精 280 | 屁眼 281 | 品香堂 282 | 前凸后翘 283 | 强jian 284 | 强暴 285 | 强奸处女 286 | 情趣用品 287 | 情色 288 | 拳交 289 | 全裸 290 | 群交 291 | 惹火身材 292 | 人妻 293 | 人兽 294 | 日逼 295 | 日烂 296 | 肉棒 297 | 肉逼 298 | 肉唇 299 | 肉洞 300 | 肉缝 301 | 肉棍 302 | 肉茎 303 | 肉具 304 | 揉乳 305 | 肉穴 306 | 肉欲 307 | 乳爆 308 | 乳房 309 | 乳沟 310 | 乳交 311 | 乳头 312 | 骚逼 313 | 骚比 314 | 骚女 315 | 骚水 316 | 骚穴 317 | 色逼 318 | 色界 319 | 色猫 320 | 色盟 321 | 色情网站 322 | 色诱 323 | 色欲 324 | 色b 325 | 少年阿宾 326 | 少修正 327 | 射爽 328 | 射颜 329 | 释欲 330 | 兽奸 331 | 兽交 332 | 手淫 333 | 兽欲 334 | 熟妇 335 | 熟母 336 | 熟女 337 | 爽片 338 | 爽死我了 339 | 双臀 340 | 死逼 341 | 丝袜 342 | 丝诱 343 | 松岛枫 344 | 酥痒 345 | 汤加丽 346 | 套弄 347 | 体奸 348 | 舔脚 349 | 舔阴 350 | 调教 351 | 偷欢 352 | 偷拍 353 | 推油 354 | 脱内裤 355 | 文做 356 | 我就色 357 | 无码 358 | 舞女 359 | 无修正 360 | 吸精 361 | 夏川纯 362 | 相奸 363 | 小逼 364 | 校鸡 365 | 小穴 366 | 小xue 367 | 性感妖娆 368 | 性感诱惑 369 | 性虎 370 | 性饥渴 371 | 性技巧 372 | 性奴 373 | 性虐 374 | 性息 375 | 性欲 376 | 胸推 377 | 穴口 378 | 学生妹 379 | 穴图 380 | 亚情 381 | 颜射 382 | 阳具 383 | 要射了 384 | 夜勤病栋 385 | 一夜欢 386 | 一夜情 387 | 一ye情 388 | 阴部 389 | 淫虫 390 | 阴唇 391 | 淫荡 392 | 阴道 393 | 淫电影 394 | 阴阜 395 | 淫妇 396 | 淫河 397 | 阴核 398 | 阴户 399 | 淫贱 400 | 淫叫 401 | 淫教师 402 | 阴茎 403 | 阴精 404 | 淫浪 405 | 淫媚 406 | 淫糜 407 | 淫魔 408 | 淫母 409 | 淫女 410 | 淫虐 411 | 淫妻 412 | 淫情 413 | 淫色 414 | 淫声浪语 415 | 淫兽学园 416 | 淫书 417 | 淫术炼金士 418 | 淫水 419 | 淫娃 420 | 淫威 421 | 淫亵 422 | 淫样 423 | 淫液 424 | 淫照 425 | 阴b 426 | 应召 427 | 幼交 428 | 幼男 429 | 幼女 430 | 欲火 431 | 欲女 432 | 玉女心经 433 | 玉蒲团 434 | 玉乳 435 | 欲仙欲死 436 | 玉穴 437 | 援交 438 | 原味内衣 439 | 援助交际 440 | 张筱雨 441 | 招鸡 442 | 招妓 443 | 中年美妇 444 | 抓胸 445 | 自慰 446 | 18禁 447 | a片 448 | gay片 449 | g点 450 | g片 451 | 玛雅网 452 | 个qb 453 | 送qb 454 | 用刀横向切腹 455 | 完全自杀手册 456 | 四海帮 457 | 足球投注 458 | 改卷内幕 459 | 安眠酮 460 | 普萘洛尔 461 | 呋塞米 462 | 西布曲明 463 | testosterone 464 | 胰岛素样生长因子 465 | 促红细胞生成素 466 | 地西泮 467 | 尼可刹米 468 | 甲睾酮 469 | 地奈德 470 | 莫达非尼 471 | 氯噻嗪 472 | 苯巴比妥 473 | 促性腺激素 474 | 泼尼松 475 | 麻黄草 476 | 雄烯二醇 477 | 新型毒品 478 | 杜冷丁 479 | 海洛因 480 | 海luo因 481 | 鸦片 482 | 阿芙蓉 483 | 咖啡因 484 | 三唑仑 485 | 美沙酮 486 | 麻古 487 | k粉 488 | 凯他敏 489 | 冰毒 490 | 苯丙胺 491 | 大麻 492 | 爱他死 493 | 氯胺酮 494 | 甲基安非他明 495 | 安非他命 496 | 吗啡 497 | morphine 498 | 摇头丸 499 | 迷药 500 | 乖乖粉 501 | 贱人 502 | 装b 503 | 大sb 504 | 傻逼 505 | 傻b 506 | 煞逼 507 | 煞笔 508 | 刹笔 509 | 傻比 510 | 沙比 511 | 欠干 512 | 婊子养的 513 | 我日你 514 | 我操 515 | 我草 516 | 卧艹 517 | 卧槽 518 | 爆你菊 519 | 艹你 520 | cao你 521 | 你他妈 522 | 真他妈 523 | 别他吗 524 | 草你吗 525 | 草你丫 526 | 操你妈 527 | 擦你妈 528 | 操你娘 529 | 操他妈 530 | 日你妈 531 | 干你妈 532 | 干你娘 533 | 娘西皮 534 | 狗操 535 | 狗草 536 | 狗杂种 537 | 狗日的 538 | 操你祖宗 539 | 操你全家 540 | 操你大爷 541 | 妈逼 542 | 你麻痹 543 | 麻痹的 544 | 妈了个逼 545 | 马勒 546 | 狗娘养 547 | 贱比 548 | 贱b 549 | 下贱 550 | 死全家 551 | 全家死光 552 | 全家不得好死 553 | 全家死绝 554 | 白痴 555 | 无耻 556 | 杀b 557 | 你吗b 558 | 你妈的 559 | 婊子 560 | 贱货 561 | 人渣 562 | 性伴侣 563 | 男公关 564 | 射精 565 | 诱奸 566 | 强奸 567 | 做爱 568 | 发生关系 569 | 处男 570 | 猛男 571 | 少妇 572 | 咪咪 573 | 兽性 574 | 风骚 575 | 呻吟 576 | 阉割 577 | 一丝不挂 578 | 脱光 579 | 干你 580 | 干死 581 | 匕首 582 | 管制刀具 583 | 弹药 584 | bb弹 585 | 违禁品 586 | 军用品 587 | 电棍 588 | 手枪 589 | 机枪 590 | 步枪 591 | 气枪 592 | 电狗 593 | 手狗 594 | 枪模 595 | 模型枪 596 | 仿真枪 597 | 狙击枪 598 | 信号枪 599 | 麻醉枪 600 | 来福枪 601 | 来复枪 602 | 冲锋枪 603 | 散弹枪 604 | 卡宾枪 605 | 枪支 606 | 枪械 607 | 炸弹 608 | 雷管 609 | 原子弹 610 | 燃烧弹 -------------------------------------------------------------------------------- /aljcscan.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # coding: utf-8 3 | 4 | import re 5 | import os 6 | import argparse 7 | import subprocess 8 | import threading 9 | from fake_useragent import UserAgent 10 | from urllib.parse import quote 11 | from termcolor import cprint 12 | from urllib.parse import urlparse 13 | 14 | from selenium.webdriver import Chrome 15 | from selenium.webdriver.chrome.options import Options 16 | 17 | reconpath = "recon_domains" 18 | scopepath = "scope_domains" 19 | 20 | # 子域名文件 21 | subfinder_file = "_subfinder.txt" 22 | shuffledns_file = "_shuffledns.txt" 23 | rapiddns_file = "_rapiddns.txt" 24 | # 验证结果文件 25 | sub_file_ok = "_sub_ok.txt" 26 | # 去重后文件 27 | anew_file = "_anew_file.txt" 28 | # 各个域名对应标题、状态码等信息文件 29 | title_file = "_title.txt" 30 | 31 | opt = Options() 32 | opt.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错 33 | opt.add_argument('window-size=1920x3000') # 设置浏览器分辨率 34 | opt.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug 35 | opt.add_argument('--hide-scrollbars') # 隐藏滚动条,应对一些特殊页面 36 | opt.add_argument('blink-settings=imagesEnabled=false') # 不加载图片,提升运行速度 37 | opt.add_argument('--headless') # 浏览器不提供可视化界面。Linux下如果系统不支持可视化不加这条会启动失败 38 | opt.add_experimental_option('excludeSwitches', ['enable-logging']) # 关闭DevTools listening on ws://127.0.0.1 日志 39 | 40 | def radSpider(targetDomain, saveDir): 41 | # 爬虫 42 | scanCommand = "echo {0}|./httpx -silent -mc 200,301,302 -threads -1000 |./hakrawler -d 2 -subs > {1}".format(targetDomain, saveDir+"domain_js.txt") 43 | print("\033[1;33m command>>>>>> \033[0m","\033[1;33m"+ scanCommand +"\033[0m") 44 | finderjs_result = subprocess.Popen(scanCommand, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) 45 | finderjs_result.wait() 46 | 47 | def All_JC(urls): 48 | for url in urls: 49 | try: 50 | driver = Chrome(options=opt) # 创建无界面对象 51 | respose = driver.page_source 52 | driver.close() 53 | rules = [] # 匹配到的标签 54 | host = True 55 | for re_rules in re_rules_list: 56 | chashuibiao = re.findall(r'{}'.format(re_rules), respose, re.S | re.I) 57 | if chashuibiao: 58 | rules.append(re_rules) 59 | host = False 60 | if host is False: 61 | with open("result.txt", "a") as file: 62 | file.write('\t地址:{}\n\t匹配项:{}\n\n'.format(url, rules)) 63 | print('{}:{} 存在暗链!'.format(threading.current_thread().name, url)) 64 | else: 65 | print('{}:{} 未检测出'.format(threading.current_thread().name, url)) 66 | except Exception as e: 67 | print('{}:{}请求出错'.format(threading.current_thread().name, url)) 68 | 69 | def logo(): 70 | logo = ''' 71 | $$\ 72 | $$ | 73 | $$$$$$\ $$ |$$\ $$$$$$$\ $$$$$$$\ $$$$$$$\ $$$$$$\ $$$$$$$\ 74 | \____$$\ $$ |\__|$$ _____|$$ _____|$$ _____|\____$$\ $$ __$$\ 75 | $$$$$$$ |$$ |$$\ $$ / \$$$$$$\ $$ / $$$$$$$ |$$ | $$ | 76 | $$ __$$ |$$ |$$ |$$ | \____$$\ $$ | $$ __$$ |$$ | $$ | 77 | \$$$$$$$ |$$ |$$ |\$$$$$$$\ $$$$$$$ |\$$$$$$$\\$$$$$$$ |$$ | $$ | 78 | \_______|\__|$$ | \_______|\_______/ \_______|\_______|\__| \__| 79 | $$\ $$ | 80 | \$$$$$$ | 81 | \______/ 82 | Author:tom v1.2 83 | ''' 84 | return logo 85 | 86 | with open('rules.txt', 'r', encoding='utf-8') as s: 87 | re_rules_list = s.read().split('\n') 88 | 89 | def main(): 90 | parser = argparse.ArgumentParser(description='Process some integers.') 91 | parser.add_argument('--targets', default='targets.txt', 92 | help='information gathering for SubDomain') 93 | parser.add_argument('--files', default='files', 94 | help='Save subDomain info to Files') 95 | parser.add_argument('--outname', default='test', 96 | help='Save outname') 97 | parser.add_argument('--Thread', action='store', 98 | type=int, default=20, 99 | help='Thread') 100 | parser.add_argument('--aljc', action='store', 101 | type=bool, default=False, 102 | help='Scan for sensitive words') 103 | parser.add_argument('--aljcall', action='store', 104 | type=bool, default=False, 105 | help='Scan for all sensitive words') 106 | 107 | args = parser.parse_args() 108 | print(args.targets) 109 | 110 | try: 111 | print(logo()) 112 | saveDir = "{}/{}/{}/".format(os.path.dirname(os.path.abspath(__file__)), reconpath, args.files) 113 | 114 | if args.aljc: 115 | with open(args.targets, "r+") as f: 116 | urls_list = f.read().split('\n') 117 | All_JC(urls_list) 118 | 119 | if args.aljcall: 120 | xc = args.Thread 121 | with open(args.targets, "r") as f: 122 | for i in f.readlines(): 123 | domain = i.strip("\n") 124 | with open("result.txt", "a") as file: 125 | file.write('目标地址:------------------({})------------------\n\n'.format(domain)) 126 | radSpider(domain, saveDir) 127 | if os.path.exists(saveDir + "domain_js.txt"): 128 | with open(saveDir + "domain_js.txt", 'r') as f: 129 | urls_list = f.read().split('\n') 130 | urls = [] 131 | twoList = [[] for i in range(xc)] 132 | for i, e in enumerate(urls_list): 133 | twoList[i % xc].append(e) 134 | for i in twoList: 135 | urls.append(i) 136 | thread_list = [threading.Thread(target=All_JC, args=(urls[i],)) for i in range(len(urls))] 137 | for t in thread_list: 138 | t.start() 139 | for t in thread_list: 140 | t.join() 141 | 142 | except Exception as e: 143 | print(e) 144 | pass 145 | 146 | if __name__ == '__main__': 147 | main() 148 | --------------------------------------------------------------------------------