├── LICENSE ├── README.md ├── Timefree.py ├── api.txt ├── catchad ├── catch.py ├── citys.txt └── needs.txt ├── main.py ├── main2 └── set.py /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 olyble 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # callPhoneBoom 3 | 思路:通过爬取使用「莆田系医院」这一营销组件的企业, 4 | 我们可以得到数以万计真实企业的网址。 5 | 并通过程序模拟浏览,可以将攻击信息给到这些企业。最终达到「电话攻击」的目的。 6 | 7 | 8 | ## 声明 9 | 本项目仅供学习交流使用,勿作商业或非法用途。 10 | 11 | 所有用户个人行为与本项目无关。 12 | 13 | ## 爬取接口 14 | 感谢xdq2005adam提供的爬取脚本catchad 15 | 16 | 得益于此脚本,你可以本地运行爬取更多地址放入api.txt中,来增加威力 17 | 18 | ## 使用教程 19 | 1. 下载 20 | ```shell script 21 | $ git clone https://github.com/olyble/callPhoneBoom.git 22 | ``` 23 | 2. 安装 Selenium 24 | ```shell script 25 | $ pip3 install selenium 26 | ``` 27 | 安装 Selenium 之后,**需要安装对应浏览器的 Driver** ,参见 Selenium 文档 [1.3 节](https://selenium-python.readthedocs.io/installation.html#drivers)。 28 | >Seleium 具体的介绍及使用方法可参见 [Selenium 文档](https://selenium-python.readthedocs.io)。 29 | 30 | 3. 配置 31 | 32 | 在main.py中填入需要轰炸的手机号 33 | 34 | 56 | 57 | 58 | 使用DrissionPage已合并到main2.只用使用set.py设置环境就可以使用 59 | 60 | 测试阶段建议大家吧api.txt 里面的网站先只保留几个做个测试再跑,要不然一次性弹出来。 61 | 问题一:手机号在哪里 改啊? 没找到配置文件config.py 62 | 跑起来只会打开和关闭网站,并没有输入 电话号码欸。 63 | 所以 希望博主大大能够补充一下 运行步骤呢 就差最后一步输入 电话号码卡住了呜呜。 selenium 和浏览器组件弄了好久 感谢博主!!!! 64 | 图片一 ![]([https://res.cloudinary.com/dxl1idlr5/image/upload/v1675247958/2023/02/ce181419ab91f325ac208e188904538a.png](https://private-user-images.githubusercontent.com/109078329/313204687-67f12993-3b62-4fb2-83d7-9b19974e3f59.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTIzMzMxNTcsIm5iZiI6MTcxMjMzMjg1NywicGF0aCI6Ii8xMDkwNzgzMjkvMzEzMjA0Njg3LTY3ZjEyOTkzLTNiNjItNGZiMi04M2Q3LTliMTk5NzRlM2Y1OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQwNVQxNjAwNTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iZTA0NDBlN2RhYTdkMTIxZjA1MjRiYjcyM2NiOWY4OWNiNzFiZjNkYTc5Y2YxNmUxNzhmNTBlNDJlZWFhZTNkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.54QEzKojTqByWB9rGS5MF5Ee836zBSBEnQEBfFi_o_o)) 65 | 图片二 ![]([https://res.cloudinary.com/dxl1idlr5/image/upload/v1675247958/2023/02/ce181419ab91f325ac208e188904538a.png](https://private-user-images.githubusercontent.com/109078329/313204705-2385e169-2318-4b7d-a5c4-3e48079cc103.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTIzMzMxNTcsIm5iZiI6MTcxMjMzMjg1NywicGF0aCI6Ii8xMDkwNzgzMjkvMzEzMjA0NzA1LTIzODVlMTY5LTIzMTgtNGI3ZC1hNWM0LTNlNDgwNzljYzEwMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQwNVQxNjAwNTdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNDBlNmJlYTc2NWViZmExZGI2YWQzYTE2NDBlNmQ0ZDJlNGI4OTc5MzA1YmZjMzQ5MzkwZTZlZjJkYzgwODZkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.LkaS9HyGqTqTSpHDaL93Kr2BEPd60MgH5tWtjduh40k)) 66 | 67 | 68 | 4. 运行程序 69 | ```shell script 70 | $ python3 main.py 71 | ``` 72 | 5. Enjoy! 73 | 74 | 运行截图: 75 | 76 | ![](https://res.cloudinary.com/dxl1idlr5/image/upload/v1675247958/2023/02/ce181419ab91f325ac208e188904538a.png) 77 | 78 | ## 目录说明 79 | 80 | 81 | ## TODO 82 | 1. 使用 PyQt5 实现用户界面。 83 | 2. 定时任务。 84 | 3. 使用 「HTTP 请求」替代「模拟浏览」。 85 | 4. 跳过验证码 86 | 5. 封装docker 87 | 88 | 89 | ## 许可 90 | MIT 91 | -------------------------------------------------------------------------------- /Timefree.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # 1.引入 ActionChains 类 4 | import time 5 | from selenium import webdriver 6 | from selenium.webdriver.common.by import By 7 | from selenium.webdriver.chrome.options import Options 8 | import schedule 9 | import random 10 | import os 11 | os.environ['WDM_LOG'] = "false" 12 | import main 13 | 14 | def job(): 15 | main.boom() 16 | 17 | 18 | # 程序主入口 19 | if __name__ == "__main__": 20 | print("正在运行定时任务中....") 21 | schedule.every().day.at("17:41").do(job) 22 | # number = random.randint(0, 2) 23 | # print(number) 24 | # if number == 0: 25 | # schedule.every().day.at("9:30").do(job) 26 | # 27 | # if number == 1: 28 | # schedule.every().day.at("13:30").do(job) 29 | # 30 | # if number == 2: 31 | # schedule.every().day.at("15:30").do(job) 32 | 33 | # 每十分钟执行任务 34 | # schedule.every(1).minutes.do(job) 35 | # # 每个小时执行任务 36 | # schedule.every().hour.do(job) 37 | # # 每天的10:30执行任务 38 | # schedule.every().day.at("10:30").do(job) 39 | # # 每个月执行任务 40 | # schedule.every().monday.do(job) 41 | # # 每个星期三的13:15分执行任务 42 | # schedule.every().wednesday.at("13:15").do(job) 43 | # # 每分钟的第17秒执行任务 44 | # schedule.every().minute.at(":17").do(job) 45 | 46 | while True: 47 | schedule.run_pending() 48 | time.sleep(1) 49 | -------------------------------------------------------------------------------- /api.txt: -------------------------------------------------------------------------------- 1 | https://ada.baidu.com/site/wjz9s9sb/xyl?imid=b3b028e65d4f5881554386c8a3393068 2 | https://ada.baidu.com/site/wjz9gbcv/xyl?imid=8cb27c8eea04a782eceda6b986b0694f 3 | https://ada.baidu.com/site/wjzqlf20/xyl?imid=9a77260b6026231a457349a4f46bf074 4 | https://ada.baidu.com/site/youhaogb.com/xyl?imid=34e8648782603147abd22d63f35fef50 5 | https://ada.baidu.com/site/wjzte3v0/xyl?imid=d4a1f5777c07a100699a8d4aee4cd66c 6 | https://ada.baidu.com/site/bdpc.yyyfuke120.com/xyl?imid=abf71be9e8ef8e13588265ce70864667 7 | https://ada.baidu.com/site/nthytyjy.com/xyl?imid=498a3d3f3104e33ba5a3eed30d8399de 8 | https://ada.baidu.com/site/wjz52b60/xyl?imid=03617a9dddf1903af0e86d6102b180e6 9 | https://ada.baidu.com/site/gjnk120.cn/xyl?imid=745b19915f7cf3cfc4a6e81c1b5aeaa9 10 | https://ada.baidu.com/site/vip.szpjnk.com/xyl?imid=b57433cad7970631980b16bee6125d2c 11 | https://ada.baidu.com/site/ntwfzy.com/xyl?imid=cc2a1639271cee7954950f1495130413 12 | https://ada.baidu.com/site/ntccfk.com/xyl?imid=382eb9161becab3c622b58197032f207 13 | https://ada.baidu.com/site/hmjfck.com/xyl?imid=b0d6ae37ffc8022ebb4b3e2845939111 14 | https://ada.baidu.com/site/hyguke.cn/xyl?imid=d5974395393131793df171f6f3c32c0d 15 | https://ada.baidu.com/site/wjznwc5z/xyl?imid=82219ed1004538829afeca97be55e83e 16 | https://ada.baidu.com/site/sztjfk.com/xyl?imid=1cb8f77d02f58367b0f5503e37ac3dc2 17 | https://ada.baidu.com/site/szfk120.com/xyl?imid=ea1addc451d014cb2489af682061260b 18 | https://ada.baidu.com/site/xhfkw.net/xyl?imid=b604cd6c43164026bb950b76a8c5d7ae 19 | https://ada.baidu.com/site/0519baopi.com/xyl?imid=29ca9f2d020c75680e6b55dd882e224a 20 | https://ada.baidu.com/site/tzpfyy.cn/xyl?imid=74106e2e1cd452e69fd6ca9021581b78 21 | https://ada.baidu.com/site/zzfkzkyy.cn/xyl?imid=0606fa457f52fa5ebc37c9b99388444a 22 | https://ada.baidu.com/site/0396fk.com/xyl?imid=e13f5b11ef5510f90bcdaafe9635284f 23 | https://ada.baidu.com/site/xzqlx.cn/xyl?imid=d8403167cd9a9a441066886a4fc0284b 24 | https://ada.baidu.com/site/sojolon.com/xyl?imid=d5ba5df4bbe7d8023446ec305b716996 25 | https://ada.baidu.com/site/xzfygt.com/xyl?imid=92a5adc2ac612c48419e5203002d3ee5 26 | https://ada.baidu.com/site/xrczx.com/xyl?imid=3b7d815919a91c370af09f6b6987b299 27 | https://ada.baidu.com/site/pfk.hztmsyypfk.com/xyl?imid=2c96cecbecc625c0648f2f9d54bd514d 28 | https://ada.baidu.com/site/yzpfb120.com/xyl?imid=5dd7c82f20c35a1e92ee88130a37c4af 29 | https://ada.baidu.com/site/wjzace9b/xyl?imid=bcc3f807d5ba95bd9aaf02fdd0cce72b 30 | https://ada.baidu.com/site/hzxhzm.com/xyl?imid=81d83297d09abe86567fa9221d168ac2 31 | https://ada.baidu.com/site/wjzpsm00/xyl?imid=49c11bb62d2bcc82cd142c37aa9f7d56 32 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=5499760f7069235d0cab43345fe7026a 33 | https://ada.baidu.com/site/0558yk.com/xyl?imid=2aa1ab65c056eb40222ab68a1e02eafe 34 | https://ada.baidu.com/site/wjz2zjsm/xyl?imid=ce1c89e7154d94a1a1b99a59ba391a71 35 | https://ada.baidu.com/site/jtbybyyjs.com/xyl?imid=348814fd480b23e9712e1159e1970c8e 36 | https://ada.baidu.com/site/bbfczx.com/xyl?imid=413274b759a8c5d2164ed23a9ff0319a 37 | https://ada.baidu.com/site/jtbybyyjs.com/xyl?imid=348814fd480b23e9712e1159e1970c8e 38 | https://ada.baidu.com/site/wjzg0zwx/xyl?imid=6ab1fc85518d3b9cca09ba75a151c394 39 | https://ada.baidu.com/site/wjzlexz0/xyl?imid=822b7148f3caa999fb28f3e59697f8fa 40 | https://ada.baidu.com/site/ycdf120.com/xyl?imid=12a2bc8fcb4a496ef233ef8703f46cfb 41 | https://ada.baidu.com/site/wjzsycew/xyl?imid=90a8a2a63af3ab013ec498f4996e299a 42 | https://ada.baidu.com/site/zjnbsznby.com/xyl?imid=06c846aca3d203f9f53dd205d262f2b6 43 | https://ada.baidu.com/site/021bdf.com/xyl?imid=0df5cf5c8634012f7da6da8879c10124 44 | https://ada.baidu.com/site/shhqykyy.cc/xyl?imid=f784fda28ae3b6ed7356be2abf079f3f 45 | https://ada.baidu.com/site/columbia-kyguke.com/xyl?imid=75775d67b0e681d604fdbf1130222972 46 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=d69bf166f0bfc33ca37fed0b3e43170e 47 | https://ada.baidu.com/site/hesxg.com/xyl?imid=556953d9072fea9364f306a75ecc7d87 48 | https://ada.baidu.com/site/wjzsqmyf/xyl?imid=9e64b73ab273387a8e4d59fbd3cefdf8 49 | https://ada.baidu.com/site/shneuro.com/xyl?imid=3fb0842c76e3261b0f200158293319dc 50 | https://ada.baidu.com/site/xpzyyy.com/xyl?imid=91ba4b0d56aef40a06c90930bf37fead 51 | https://ada.baidu.com/site/yiboyiyuan16.com/xyl?imid=e3b2baa1efab85db7548c3cd6b999bf0 52 | https://ada.baidu.com/site/wjz70c46/xyl?imid=6e491f01918e7a86b10de8266ffb9985 53 | https://ada.baidu.com/site/wjzsg070/xyl?imid=6ef15aeedbb5b23d235cea459c538b3b 54 | https://ada.baidu.com/site/wjzhrdyq/xyl?imid=ec4cced639e2f24915e4624c5258e966 55 | https://ada.baidu.com/site/wjzb7a1v/xyl?imid=77646e6fee9ab437765d0511e1f4cab3 56 | https://ada.baidu.com/site/wjz6o71y/xyl?imid=e7d32bef8d9eb75fdefb21b4a934970b 57 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=5767859b4aac3a00c7e43c7a10c2d738 58 | https://ada.baidu.com/site/wjzf1mv3/xyl?imid=e16b5254d75026373775a972a82e3198 59 | https://ada.baidu.com/site/010sdebhyy.com/xyl?imid=38e30218d9f5f20a573aa413dda87bc8 60 | https://ada.baidu.com/site/wjzxr031/xyl?imid=25bae829aceab570dd6aaa568b6140f7 61 | https://ada.baidu.com/site/wjzbi0w1/xyl?imid=d16dd68e4f93474e8a67f0773f1c3f7b 62 | https://ada.baidu.com/site/wjzxr031/xyl?imid=25bae829aceab570dd6aaa568b6140f7 63 | https://ada.baidu.com/site/dyhsyy3.com/xyl?imid=715031c9e4beb99367f13cbc8c7ba92a 64 | https://ada.baidu.com/site/sdboaiyy.com/xyl?imid=87459e28a56f6c4c80f7c544b1b67823 65 | https://ada.baidu.com/site/wjznlp01/xyl?imid=05b7ffdddd539c8b5e29651315cae155 66 | https://ada.baidu.com/site/lyzhnkyy.com/xyl?imid=614bcbc49e7a87f8e1a5865a6902d533 67 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=288ad5739a45148ce0525a1ea19ad0e4 68 | https://ada.baidu.com/site/lnyyly.com/xyl?imid=bd22f0197e0bb6fb6f2c516fb27d4bf7 69 | https://ada.baidu.com/site/wjzwsc53/xyl?imid=a083dd7b4515d019adc80cbf38694c26 70 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=7f95fa12587c918c309698d53aea93ab 71 | https://ada.baidu.com/site/wjz8hbwr/xyl?imid=37c7f8f68fce9ed6167595b96b4bb444&fcbdjj8 72 | https://ada.baidu.com/site/lkzdgm.com/xyl?imid=85c03d075a6bb5d0f7395066ee3c1021 73 | https://ada.baidu.com/site/wjzb4f9w/xyl?imid=799c35e4d88b76badb21bf333456b085 74 | https://ada.baidu.com/site/wjzrzc1w/xyl?imid=2bd160f3217eb0f9b6a35e8df260b114 75 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=bf43388ea114805650fea3138f5224d0 76 | https://ada.baidu.com/site/wjzcpxn0/xyl?imid=84bba03964b7ffcc759272ef703618a3 77 | https://ada.baidu.com/site/xtfkzk.com/xyl?imid=3cb0a00fb5a2fa33eca0b862ac6cdbf3 78 | https://ada.baidu.com/site/wjzejaim/xyl?imid=399364f9af2fb02a035b4953edc4f231 79 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=bf43388ea114805650fea3138f5224d0 80 | https://ada.baidu.com/site/wjz9760m/xyl?imid=168730e895b6a11da432ba74c5a408e1 81 | https://ada.baidu.com/site/wjzerl4x/xyl?imid=50d47a13ba83b7f44f04e29da5d27230 82 | https://ada.baidu.com/site/wjzmmum0/xyl?imid=2a767139a8cdd476a9b6c0a6baa6d0c5 83 | https://ada.baidu.com/site/cj0314.com/xyl?imid=82c35c6ca5cb5c47a84ed09d043f814d 84 | https://ada.baidu.com/site/cdnx120.com/xyl?imid=371e0c1ea4147f22e5ef4f99c37a80e6&G5 85 | https://ada.baidu.com/site/0412pf.com/xyl?imid=5218901efe84e03b9c3da9bae1dc22b6 86 | https://ada.baidu.com/site/wjz22slx/xyl?imid=c9bb9f76c7922cc075f046db3a204782 87 | https://ada.baidu.com/site/aier0414.com/xyl?imid=74cbcfce97f3c4cd377d8a6b907ac3bb 88 | https://ada.baidu.com/site/spszsyy.com/xyl?imid=66dd1262fc94fa83b996ac250d3724d1 89 | https://ada.baidu.com/site/jlht0431.com/xyl?imid=f7a7ffc1f30e7617ac23ef55c3eb1ff7 90 | https://ada.baidu.com/site/wjz1hhl0/xyl?imid=f5eb2c1ca908a0aad538739b689dd907 91 | https://ada.baidu.com/site/cczl120.com/xyl?imid=af967b7afecbfadcf29131cb5705a9ce 92 | https://ada.baidu.com/site/hrbrl.net/xyl?imid=92de9a882b260d312a9cbb1054eb9b32 93 | https://ada.baidu.com/site/sjnpx.com/xyl?imid=9da4f603619bb72d1be549e9494365c7 94 | https://ada.baidu.com/site/wjz88a41/xyl?imid=d273f94a905d3be8939344727382a5e7 95 | https://ada.baidu.com/site/hebpfbyy.com/xyl?imid=0c56ea2f08fdec825eeb281a34d17600 96 | https://ada.baidu.com/site/dqfkw.com/xyl?imid=4e3578408b599aeebe2d42d7edce7e5b 97 | https://ada.baidu.com/site/cceyg.com/xyl?imid=502228d315beba1c1f9a3bb9f19455c2 98 | https://ada.baidu.com/site/qianhu.wejianzhan.com/xyl?imid=10c340eb2e1a086c251975aa7c360aca 99 | https://ada.baidu.com/site/wjzhmxjw/xyl?imid=d2438e7425c02759d0349db5a4bccca1 100 | https://ada.baidu.com/site/wjz5ad7u/xyl?imid=823d3825488494deb5214471c556ef0b 101 | -------------------------------------------------------------------------------- /catchad/catch.py: -------------------------------------------------------------------------------- 1 | import requests # 发送请求 2 | import pandas as pd # 存入csv数据 3 | import time # 等待间隔 4 | import random # 随机 5 | import re # 用正则表达式提取url 6 | import traceback 7 | 8 | pd.set_option('display.max_rows', 10000) 9 | pd.set_option('display.max_columns', 10000) 10 | pd.set_option('display.width', 10000) 11 | 12 | 13 | with open('citys.txt', encoding='utf-8') as file: 14 | citys = file.readlines() 15 | with open('needs.txt', encoding='utf-8') as file: 16 | needs = file.readlines() 17 | 18 | 19 | # 伪装浏览器请求头 20 | headers = { 21 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36", 22 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", 23 | "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 24 | "Connection": "keep-alive", 25 | "Accept-Encoding": "gzip, deflate", 26 | "Host": "www.baidu.com", 27 | # 需要更换Cookie 28 | "Cookie": "BIDUPSID=203BB116BAD7A21452D9A8AFCF9C36F2; PSTM=1665389661; BD_UPN=123253; BDUSS=lpQTF1OFlKZmpJZEZmQ3pHdkpqMnhzRElNUk1kU35VWFFuaEpsUVpaZWtpR3hqRVFBQUFBJCQAAAAAAAAAAAEAAABNtRgKc29sb19tc2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKT7RGOk-0Rjfm; BDUSS_BFESS=lpQTF1OFlKZmpJZEZmQ3pHdkpqMnhzRElNUk1kU35VWFFuaEpsUVpaZWtpR3hqRVFBQUFBJCQAAAAAAAAAAAEAAABNtRgKc29sb19tc2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKT7RGOk-0Rjfm; BAIDUID=1088EDF2D03D0FA6EC2D052921641828:FG=1; MCITY=-:; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BA_HECTOR=002la48g8l0k258g8185087v1hnjr451f; ZFY=R:BX3g8nr3kFWuFJs0zZHFQAmnd8jgw:BJUmyeTbQuQHU:C; BAIDUID_BFESS=1088EDF2D03D0FA6EC2D052921641828:FG=1; BD_HOME=1; sugstore=0; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; BD_CK_SAM=1; PSINO=2; delPer=0; baikeVisitId=f3893191-471e-4462-a8dc-d1569ec1182d; H_PS_PSSID=36548_37557_37513_37684_37768_37778_37797_37539_37714_37741_26350_37789; H_PS_645EC=f126ZpPGPo4WkGeVRredI8zb2MdUoY1SWbcuKHKZLJ9PNN0gGSrKV4sXAlv3yU9gf7Sa; BDSVRTM=199; WWW_ST=1668936275987" 29 | } 30 | 31 | 32 | def baidu_search(v_keyword, v_max_page): 33 | """ 34 | 爬取百度搜素结果 35 | :param v_max_page: 爬取前几页 36 | :param v_keyword: 搜索关键词 37 | :param v_result_file: 保存文件名 38 | :return: None 39 | """ 40 | # 获得每页搜索结果 41 | for page in range(v_max_page): 42 | print('开始爬取第{}页'.format(page + 1)) 43 | wait_seconds = random.uniform(1, 2) # 等待时长秒 44 | print('开始等待{}秒'.format(wait_seconds)) 45 | time.sleep(wait_seconds) # 随机等待 46 | url = 'https://www.baidu.com/s?wd=' + \ 47 | v_keyword + '&pn=' + str(page * 10) 48 | r = requests.get(url, headers=headers) 49 | html = r.text 50 | link = re.findall( 51 | "https://ada.baidu.com/site/.*?xyl.imid........................................", html) 52 | url = [] 53 | site = [] 54 | for i in link: 55 | j = i.split('/')[4] 56 | k = i.split('/')[5] 57 | if k.startswith('xyl'): 58 | url.append(i) 59 | site.append(j) 60 | result = {"url": url, "site": site} 61 | data = pd.DataFrame(result) 62 | data = data.drop_duplicates(['site']) 63 | data = data.set_index(['url']) 64 | print(1) 65 | print(data) 66 | data.to_csv('baidu_ad_site.csv', mode='a', header=None) 67 | print('保存成功') 68 | 69 | 70 | if __name__ == '__main__': 71 | for city in citys: 72 | for need in needs: 73 | try: 74 | search_keyword = f"{city.strip()}{need}" 75 | print(search_keyword) 76 | baidu_search(v_keyword=search_keyword, v_max_page=1) 77 | except Exception: 78 | traceback.print_exc() 79 | time.sleep(60) 80 | pass 81 | -------------------------------------------------------------------------------- /catchad/citys.txt: -------------------------------------------------------------------------------- 1 | 北京 2 | 天津 3 | 上海 4 | 重庆 5 | 石家庄 6 | 唐山 7 | 秦皇岛 8 | 邯郸 9 | 邢台 10 | 保定 11 | 张家口 12 | 承德 13 | 沧州 14 | 廊坊 15 | 衡水 16 | 太原 17 | 大同 18 | 阳泉 19 | 长治 20 | 晋城 21 | 朔州 22 | 晋中 23 | 运城 24 | 忻州 25 | 临汾 26 | 吕梁 27 | 呼和浩特 28 | 包头 29 | 乌海 30 | 赤峰 31 | 通辽 32 | 鄂尔多斯 33 | 呼伦贝尔 34 | 巴彦淖尔 35 | 乌兰察布 36 | 兴安盟 37 | 锡林郭勒盟 38 | 阿拉善盟 39 | 沈阳 40 | 大连 41 | 鞍山 42 | 抚顺 43 | 本溪 44 | 丹东 45 | 锦州 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 | 连云港 82 | 淮安 83 | 盐城 84 | 扬州 85 | 镇江 86 | 泰州 87 | 宿迁 88 | 浙江省: 89 | 杭州 90 | 宁波 91 | 温州 92 | 嘉兴 93 | 湖州 94 | 绍兴 95 | 金华 96 | 衢州 97 | 舟山 98 | 台州 99 | 丽水 100 | 合肥 101 | 芜湖 102 | 蚌埠 103 | 淮南 104 | 马鞍山 105 | 淮北 106 | 铜陵 107 | 安庆 108 | 黄山 109 | 滁州 110 | 阜阳 111 | 宿州 112 | 巢湖 113 | 六安 114 | 亳州 115 | 池州 116 | 宣城 117 | 福州 118 | 厦门 119 | 莆田 120 | 三明 121 | 泉州 122 | 漳州 123 | 南平 124 | 龙岩 125 | 宁德 126 | 南昌 127 | 景德镇 128 | 萍乡 129 | 九江 130 | 新余 131 | 鹰潭 132 | 赣州 133 | 吉安 134 | 宜春 135 | 抚州 136 | 上饶 137 | 济南 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 | 周口 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 | 湛江 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 | 德阳 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 | 楚雄彝族自治州 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 | 海北藏族自治州 325 | 黄南藏族自治州 326 | 海南藏族自治州 327 | 果洛藏族自治州 328 | 玉树藏族自治州 329 | 海西蒙古族藏族自治州 330 | 银川 331 | 石嘴山 332 | 吴忠 333 | 固原 334 | 中卫 335 | 乌鲁木齐 336 | 克拉玛依 337 | 吐鲁番 338 | 哈密 339 | 昌吉回族自治州 340 | 博尔塔拉蒙古自治州 341 | 巴音郭楞蒙古自治州 342 | 阿克苏地区 343 | 克孜勒苏柯尔克孜自治州 344 | 喀什地区 345 | 和田地区 346 | 伊犁哈萨克自治州 347 | 塔城地区 348 | 阿勒泰地区 -------------------------------------------------------------------------------- /catchad/needs.txt: -------------------------------------------------------------------------------- 1 | 医院 2 | 流产 3 | 不孕不育 4 | 宫颈糜烂 5 | 双眼皮 6 | 医美 7 | 整形 8 | 丰胸 9 | 律师 10 | 离婚 11 | 诉讼 12 | 讨债 13 | 判刑 14 | 交通事故 15 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | from multiprocessing import Process, Queue 5 | import time 6 | from selenium.webdriver.support.ui import WebDriverWait 7 | from selenium.webdriver.support import expected_conditions as EC 8 | from selenium.webdriver.chrome.options import Options 9 | from selenium import webdriver 10 | from selenium.webdriver.common.by import By 11 | 12 | 13 | def visit_website(url, i, queue,phone): 14 | try: 15 | driver = webdriver.Chrome() 16 | driver.get("https://www.baidu.com/") 17 | driver.get(url) 18 | 19 | try: 20 | # 等待弹窗出现并点击关闭按钮 21 | WebDriverWait(driver, 10).until( 22 | EC.presence_of_element_located((By.CLASS_NAME, "imlp-component-captcha-close"))).click() 23 | except: 24 | # 如果弹窗没有出现,就什么都不做 25 | pass 26 | time.sleep(30) 27 | handles = driver.window_handles 28 | driver.switch_to.window(handles[-1]) 29 | 30 | # driver.find_element(By.CLASS_NAME, 'pc-icon-leave-tel').click() 31 | # time.sleep(3) 32 | # driver.find_element(By.CLASS_NAME, 'leavetel-input').send_keys(phone) 33 | # time.sleep(3) 34 | # driver.find_element(By.CLASS_NAME, 'leavetel-callback').click() 35 | WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, '.pc-icon-leave-tel'))).click() 36 | WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'leavetel-input'))).send_keys(phone) 37 | WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'leavetel-callback'))).click() 38 | 39 | time.sleep(1) 40 | driver.quit() 41 | 42 | # 将执行结果添加到共享列表 43 | queue.put((i, True)) 44 | 45 | except Exception as exc: 46 | # 如果发生错误,将执行结果添加到共享列表 47 | queue.put((i, False)) 48 | 49 | 50 | def boom(phone): 51 | """模仿浏览器,请求api信息""" 52 | with open('api.txt', 'r') as file: 53 | urls = file.readlines() 54 | # 计算链接地址条数 55 | n_urls = len(urls) 56 | 57 | processes = [] 58 | queue = Queue() 59 | # 遍历链接地址 60 | for i, url in enumerate(urls): 61 | processes.append(Process(target=visit_website, args=(url.strip(), i, queue,phone))) 62 | # 启动所有线程 63 | for p in processes: 64 | p.start() 65 | 66 | # 等待所有线程结束 67 | for p in processes: 68 | p.join() 69 | n = 0 70 | while not queue.empty(): 71 | i, j = queue.get() 72 | if j: 73 | n += 1 74 | print(f"一共成功:{n}/{n_urls}") 75 | 76 | 77 | # 程序主入口 78 | if __name__ == "__main__": 79 | # get_cookie() 80 | boom("phone1") 81 | boom("phone2") 82 | 83 | -------------------------------------------------------------------------------- /main2: -------------------------------------------------------------------------------- 1 | from DrissionPage import ChromiumPage 2 | from DrissionPage.configs.chromium_options import ChromiumOptions 3 | 4 | # co = ChromiumOptions().use_system_user_path() 5 | # page = ChromiumPage(co) 6 | page = ChromiumPage() 7 | 8 | with open('api.txt', 'r') as file: 9 | urls = file.readlines() 10 | for i, url in enumerate(urls): 11 | page.get(url) 12 | # 定位到页面上文字为留电的按钮上并点击 13 | isdisplay1 = page.wait.ele_display('.contact-item-text', timeout=5) 14 | if isdisplay1: 15 | ele = page.ele('.contact-item-text') 16 | if ele: 17 | ele.click() 18 | else: 19 | continue 20 | isdisplay2 = page.wait.ele_display('.leavetel-input ', timeout=5) 21 | if isdisplay2: 22 | page.ele('.leavetel-input ').input('phone') 23 | page.ele('.leavetel-callback').click() 24 | else: 25 | continue 26 | else: 27 | continue 28 | 29 | -------------------------------------------------------------------------------- /set.py: -------------------------------------------------------------------------------- 1 | from DrissionPage.easy_set import set_paths 2 | 3 | 4 | # 设置你的浏览器路径 5 | # see: http://g1879.gitee.io/drissionpagedocs/get_start/before_start/ 6 | 7 | 8 | set_paths(browser_path=r'这里修改为您的浏览器可执行文件路径') 9 | 10 | # test : 11 | # from DrissionPage import ChromiumPage 12 | # page = ChromiumPage() 13 | # page.get('http://g1879.gitee.io/DrissionPageDocs') 14 | 15 | --------------------------------------------------------------------------------