{"id":1163,"date":"2024-04-30T18:44:31","date_gmt":"2024-04-30T10:44:31","guid":{"rendered":"http:\/\/www.max-shu.com\/blog\/?p=1163"},"modified":"2024-04-30T18:44:32","modified_gmt":"2024-04-30T10:44:32","slug":"spider-flow%e7%88%ac%e8%99%ab%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"http:\/\/www.max-shu.com\/blog\/?p=1163","title":{"rendered":"spider flow\u722c\u866b\u4f7f\u7528"},"content":{"rendered":"\n<p><strong>\u4ee3\u7801\uff1a<\/strong><\/p>\n\n\n\n<p>\u4e0b\u8f7d20240417\u7684spider&nbsp;flow\u7684master\u5206\u652f\u7684\u4ee3\u7801\uff1a&nbsp;<a href=\"https:\/\/github.com\/ssssssss-team\/spider-flow\">https:\/\/github.com\/ssssssss-team\/spider-flow<\/a><\/p>\n\n\n\n<p>\u4e0b\u8f7d20240429\u7684selenium\u63d2\u4ef6\u7684master\u5206\u652f\u7684\u4ee3\u7801\uff1a&nbsp;<a href=\"https:\/\/gitee.com\/ssssssss-team\/spider-flow-selenium\">https:\/\/gitee.com\/ssssssss-team\/spider-flow-selenium<\/a><\/p>\n\n\n\n<p>\u5047\u5b9a\u5728JDK 21\u4e0b\u7f16\u8bd1\u548c\u8fd0\u884c\uff0cgithub\u4e0a\u7684\u4ee3\u7801\u539f\u6765\u662f\u5728JDK 1.8\u4e0a\u7f16\u8bd1\u548c\u8fd0\u884c\u7684\uff0c\u6240\u4ee5\u9700\u8981\u4fee\u6539\u3002<\/p>\n\n\n\n<p><strong>\u89e3\u538b<\/strong>\uff1a<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;\u628aspider-flow-master.zip\u89e3\u538b\u5230\u7535\u8111\u4e0a\u7684\u67d0\u4e2a\u76ee\u5f55\u6bd4\u5982D:\\idealU_PROJECT\\spider-flow-master_20240417\uff0c\u7136\u540e\u628aspider-flow-selenium-master.zip\u89e3\u538b\u5230D:\\idealU_PROJECT\\spider-flow-master_20240417\\spider-flow-selenium-master_20240429\u76ee\u5f55\u4e0b\u3002<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-core\\src\\main\\java\\org\\spiderflow\\core\\script\\ScriptManager.java<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-d64fa884709f818e9c358b275fcb708c\"><em>\/\/<\/em><em>import jdk.nashorn.api.scripting.ScriptObjectMirror;<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-2e6c0ef565c443b59ae018cd9ea80568\">import org.openjdk.nashorn.api.scripting.ScriptObjectMirror;<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-core\\src\\main\\java\\org\\spiderflow\\core\\service\\SpiderFlowService.java<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-e45c5cef9139033815f7356d51773c28\">import org.springframework.context.annotation.Lazy;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-9309299876041d692ad64afbcae43cbd\">@Lazy<\/p>\n\n\n\n<p>@Autowired<\/p>\n\n\n\n<p>private SpiderJobManager spiderJobManager;<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-core\/src\/main\/java\/org\/spiderflow\/core\/executor\/shape\/ExecuteSQLExecutor.java ??<\/p>\n\n\n\n<p>\u628a Array.<em>get<\/em>(object,Math.<em>min<\/em>(-1,index));<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-bd85496f347dcd0ec3a52754c2b342cf\">\u6539\u6210\uff1aArray.<em>get<\/em>(object,Math.<em>min<\/em>(size-1,index));<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-web\/src\/main\/java\/org\/spiderflow\/configuration\/ResourcesConfiguration.java<\/p>\n\n\n\n<p>public void addCorsMappings(CorsRegistry registry) {<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;registry.addMapping(&#8220;\/**&#8221;)<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-d4fa4bcb7fc4477bd3ece7a8e0bca5db\"><em>&nbsp;&nbsp; &nbsp;\/\/.allowedOrigins(&#8220;*&#8221;)<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-79a0d39a55d5bfd11b961d4605a8ae07\">&nbsp;&nbsp; &nbsp;.allowedOriginPatterns(&#8220;*&#8221;)<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-selenium-master_20240429\\src\\main\\java\\org\\spiderflow\\selenium\\driver\\ChromeDriverProvider.java<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;public WebDriver getWebDriver(SpiderNode node, String proxyStr) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty(&#8220;webdriver.chrome.driver&#8221;, chromeDriverPath);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChromeOptions options = new ChromeOptions();<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0String userAgent = node.getStringJsonValue(USER_AGENT);<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-5d3be88ed1534304e3078baabf0d7c0c\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\u5141\u8bb8\u8fdc\u7a0b\u8fde\u63a5\u8fdb\u884c\u8c03\u8bd5<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-1bca9d72419711c330d4c84edcf2aed2\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0options.addArguments(&#8220;&#8211;remote-allow-origins=*&#8221;);<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-237b41f570466ea1c1940068731dea85\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/options.addArguments(&#8220;&#8211;headless&#8221;);<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-selenium-master_20240429\\src\\main\\java\\org\\spiderflow\\selenium\\driver\\HtmlUnitDriverProvider.java<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-c7de591e2227ff2445deac5a02b2101f\">import org.openqa.selenium.Platform;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0\u00a0public WebDriver getWebDriver(SpiderNode node, String proxyStr) {<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-366539cb9ca7048c0c4541fb99eafc6d\">\u00a0       \/\/DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit();<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-24658cec374ee217e868a8fa39a75fca\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DesiredCapabilities capabilities = new DesiredCapabilities(&#8220;htmlunit&#8221;, &#8220;&#8221;, Platform.ANY);<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1apom.xml<\/p>\n\n\n\n<p>&lt;parent&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-1a392c4b805b4f67c199c93c2656b74a\">&nbsp; &nbsp;&nbsp;&lt;version&gt;2.7.18&lt;\/version&gt;<\/p>\n\n\n\n<p>&lt;\/parent&gt;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-1906f5807e5b7b42000cdc1eccfca7d7\">&nbsp;&nbsp; &nbsp;&lt;guava.version&gt;31.1-jre&lt;\/guava.version&gt;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p>&lt;dependencies&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-8e55e376ca87766bfa7342423d694493\">&nbsp;&nbsp; &nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-9d2434c4e1b638cd040f16cccf6df224\">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;groupId&gt;org.openjdk.nashorn&lt;\/groupId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-16938c607185123dca760b19bf02b5ec\">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;artifactId&gt;nashorn-core&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-a1dbb8c942aee4fdcfd5501969a88986\">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;version&gt;15.4&lt;\/version&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-694c748fc081e1cb93d77f1fc7a36c1e\">&nbsp;&nbsp; &nbsp;&lt;\/dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;groupId&gt;mysql&lt;\/groupId&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-cdf1d0ffdbc124b1a25f3faedf529ec7\">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&lt;version&gt;8.0.33&lt;\/version&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;\/dependency&gt;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;module&gt;spider-flow-web&lt;\/module&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-237b5eb3b2c0b0ad0cd5b033c38364dd\">&nbsp;&nbsp; &nbsp;&lt;module&gt;spider-flow-selenium-master_20240429&lt;\/module&gt;<\/p>\n\n\n\n<p>&lt;\/modules&gt;<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-web\/pom.xml\uff1a<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;selenium-java&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-bea0ac7326224a2fe2a8312921c8f3e1\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;4.20.0&lt;\/version&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/dependency&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-fa3d294fc68f8f4f38e116d50cd0b63d\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!&#8211; \u5f15\u5165selenium\u63d2\u4ef6 &#8211;&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-ed0ec8d773eb370a4c6d9fbb951f761f\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-18996c3088eef15488a02519860357e0\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.spiderflow&lt;\/groupId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-d38069768bb5432cb3da6caac9bf670b\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;spider-flow-selenium&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-b9529c7b386d2a453cd122e633f5f7b9\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/dependency&gt;<\/p>\n\n\n\n<p>&lt;\/dependencies&gt;<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-a41125ee5c816c2bece6a2396ea00702\">&nbsp;&nbsp; &nbsp;&lt;finalName&gt;spider-flow-${project.version}&lt;\/finalName&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp; &nbsp;&lt;mainClass&gt;org.spiderflow.SpiderApplication&lt;\/mainClass&gt;<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-selenium-master_20240429\/pom.xml<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;selenium-java&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-bea0ac7326224a2fe2a8312921c8f3e1\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;4.20.0&lt;\/version&gt;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.seleniumhq.selenium&lt;\/groupId&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;htmlunit-driver&lt;\/artifactId&gt;<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-bc9016e0cf7f58f61e9b0545da479755\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;4.13.0&lt;\/version&gt;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &lt;\/dependency&gt;<\/p>\n\n\n\n<p>&lt;\/dependencies&gt;<\/p>\n\n\n\n<p><strong>\u4fee\u6539<\/strong>\uff1aspider-flow-web\/src\/main\/resources\/application.properties<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-f914c1bc49888fb8d359441994973ac7\">server.port=8088<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-0a270c53333c31d3b9dc862c0e8db19f\">spring.profiles.active=dev<\/p>\n\n\n\n<p>logging.level.root=INFO<\/p>\n\n\n\n<p><em>#logging.level.org.spiderflow=DEBUG<\/em><\/p>\n\n\n\n<p><em>#<\/em><em>\u5e73\u53f0\u6700\u5927\u7ebf\u7a0b\u6570<\/em><\/p>\n\n\n\n<p>spider.thread.max=64<\/p>\n\n\n\n<p><em>#<\/em><em>\u5355\u4efb\u52a1\u9ed8\u8ba4\u6700\u5927\u7ebf\u7a0b\u6570<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-c2813298c7705357869de7ca76b99907\">spider.thread.default=4<\/p>\n\n\n\n<p><em>#<\/em><em>\u8bbe\u7f6e\u4e3a<\/em><em>true<\/em><em>\u65f6\u5b9a\u65f6\u4efb\u52a1\u624d\u751f\u6548<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-8be54579b054d3af108e3c8c9381fe4c\">spider.job.enable=true<\/p>\n\n\n\n<p><em>#<\/em><em>\u722c\u866b\u4efb\u52a1\u7684\u5de5\u4f5c\u7a7a\u95f4<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-35087ec5989a47c5e31621c8a62817b1\">spider.workspace=spider_workspace<\/p>\n\n\n\n<p><em>#<\/em><em>\u5e03\u9686\u8fc7\u6ee4\u5668\u9ed8\u8ba4\u5bb9\u91cf<\/em><\/p>\n\n\n\n<p>spider.bloomfilter.capacity=1000000<\/p>\n\n\n\n<p><em>#<\/em><em>\u5e03\u9686\u8fc7\u6ee4\u5668\u9ed8\u8ba4\u5bb9\u9519\u7387<\/em><\/p>\n\n\n\n<p>spider.bloomfilter.error-rate=0.0001<\/p>\n\n\n\n<p><em>#<\/em><em>\u6b7b\u5faa\u73af\u68c0\u6d4b<\/em><em>(<\/em><em>\u8282\u70b9\u6267\u884c\u6b21\u6570\u8d85\u8fc7\u8be5\u503c\u65f6\u8ba4\u4e3a\u662f\u6b7b\u5faa\u73af<\/em><em>)<\/em><em>\u9ed8\u8ba4\u503c\u4e3a<\/em><em>5000<\/em><\/p>\n\n\n\n<p><em>#spider.detect.dead-cycle=5000<\/em><\/p>\n\n\n\n<p>spring.jackson.date-format=yyyy-MM-dd HH:mm:ss<\/p>\n\n\n\n<p>spring.jackson.time-zone=GMT+8<\/p>\n\n\n\n<p>spring.jackson.serialization.<em>fail_on_empty_beans<\/em>=false<\/p>\n\n\n\n<p>spring.mvc.favicon.enabled=false<\/p>\n\n\n\n<p>spring.datasource.driver-class-name=com.mysql.jdbc.Driver<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-9c0ab5188e0eb3b631f3fab94602e628\">spring.datasource.username=${my.db.user}<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-53c877b48121e55d23a17de6b557b528\">spring.datasource.password=${my.db.passwd}<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-d94fdc2f08ed69dc72c9eb0c01600737\">spring.datasource.url=jdbc:mysql:\/\/${my.db.host}:${my.db.port}\/spiderflow?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;autoReconnect=true<\/p>\n\n\n\n<p><em>#JavaMailSender<\/em><em>\u90ae\u4ef6\u53d1\u9001\u7684\u914d\u7f6e<\/em><\/p>\n\n\n\n<p>spring.mail.protocol=smtp<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-45d639260589d560a2d560a649b98b74\">spring.mail.host=<a href=\"http:\/\/smtp.exmail.qq.com\/\">smtp.exmail.qq.com<\/a><\/p>\n\n\n\n<p>spring.mail.port=465<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-11bc47fc913b4b70fc0a0ccdab669de1\">spring.mail.username=<a href=\"mailto:ops@yunbu.me\">xxx@qq.com<\/a><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-c3c0e9cbdd520a92894086b5863f893b\">spring.mail.password=xxxyyy<\/p>\n\n\n\n<p>spring.mail.default-encoding=UTF-8<\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.auth=true<\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.starttls.enable=true<\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.starttls.required=true<\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.socketFactory.class=<a href=\"http:\/\/javax.net.ssl.sslsocketfactory\/\">javax.net.ssl.SSLSocketFactory<\/a><\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.socketFactory.port=465<\/p>\n\n\n\n<p>spring.mail.properties.mail.smtp.socketFactory.fallback=false<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-00427b6c8edfb12d5ab9efd7ba5b825a\">spring.mail.properties.mail.smtp.ssl.enable=true<\/p>\n\n\n\n<p>spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration<\/p>\n\n\n\n<p><em>#selenium<\/em><em>\u63d2\u4ef6\u914d\u7f6e<\/em><\/p>\n\n\n\n<p><em>#<\/em><em>\u8bbe\u7f6e<\/em><em>chrome<\/em><em>\u7684<\/em><em>WebDriver<\/em><em>\u9a71\u52a8\u8def\u5f84\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a<\/em><a href=\"http:\/\/npm.taobao.org\/mirrors\/chromedriver\/\">http:\/\/npm.taobao.org\/mirrors\/chromedriver\/<\/a><em>\uff0c\u6ce8\u610f\u7248\u672c\u95ee\u9898<\/em><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-638e73ad46d9fd137383eb491b1f1e34\">selenium.driver.chrome=${spider.workspace}\\\\chromedriver.exe<\/p>\n\n\n\n<p><em>#<\/em><em>\u8bbe\u7f6e<\/em><em>fireFox<\/em><em>\u7684<\/em><em>WebDriver<\/em><em>\u9a71\u52a8\u8def\u5f84\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a<\/em><a href=\"https:\/\/github.com\/mozilla\/geckodriver\/releases\">https:\/\/github.com\/mozilla\/geckodriver\/releases<\/a><\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-ec38a295a2d36c8ab40d31fb80360145\">selenium.driver.firefox=${spider.workspace}\\\\geckodriver.exe<\/p>\n\n\n\n<p><em>#<\/em><em>\u722c\u866b\u901a\u77e5\u76f8\u5173\u5185\u5bb9\u914d\u7f6e<\/em><em>,<\/em><em>\u53ef\u4f7f\u7528<\/em><em>SpiderFlow<\/em><em>\u4e2d\u7684\u53d8\u91cf\u540d\u548c\u4ee5\u4e0b\u53d8\u91cf\u540d<\/em><em>:currentDate:<\/em><em>\u5f53\u524d\u53d1\u9001\u65f6\u95f4<\/em><\/p>\n\n\n\n<p>spider.notice.subject=spider-flow\u6d41\u7a0b\u901a\u77e5<\/p>\n\n\n\n<p>spider.notice.content.start=\u6d41\u7a0b\u5f00\u59cb\u6267\u884c\uff1a{name}\uff0c\u5f00\u59cb\u65f6\u95f4\uff1a{currentDate}<\/p>\n\n\n\n<p>spider.notice.content.end=\u6d41\u7a0b\u6267\u884c\u5b8c\u6bd5\uff1a{name}\uff0c\u7ed3\u675f\u65f6\u95f4\uff1a{currentDate}<\/p>\n\n\n\n<p>spider.notice.content.exception=\u6d41\u7a0b\u53d1\u751f\u5f02\u5e38\uff1a{name}\uff0c\u5f02\u5e38\u65f6\u95f4\uff1a{currentDate}<\/p>\n\n\n\n<p><strong>\u589e\u52a0<\/strong>\uff1aspider-flow-web\/src\/main\/resources\/application-dev.properties<\/p>\n\n\n\n<p>spider.thread.default=2<\/p>\n\n\n\n<p>spider.workspace=spider_workspace<\/p>\n\n\n\n<p>my.db.user=xxx<\/p>\n\n\n\n<p>my.db.passwd=xxxyyy<\/p>\n\n\n\n<p>my.db.host=192.168.1.248<\/p>\n\n\n\n<p>my.db.port=3306<\/p>\n\n\n\n<p>selenium.driver.chrome=${spider.workspace}\\\\chromedriver.exe<\/p>\n\n\n\n<p>selenium.driver.firefox=${spider.workspace}\\\\geckodriver.exe<\/p>\n\n\n\n<p><strong>\u589e\u52a0<\/strong>\uff1aspider-flow-web\/src\/main\/resources\/application-test.properties<\/p>\n\n\n\n<p>spider.thread.default=4<\/p>\n\n\n\n<p>spider.workspace=\/data\/spider<\/p>\n\n\n\n<p>my.db.user=xxx<\/p>\n\n\n\n<p>my.db.passwd=xxxyyy<\/p>\n\n\n\n<p>my.db.host=192.168.1.249<\/p>\n\n\n\n<p>my.db.port=3306<\/p>\n\n\n\n<p>selenium.driver.chrome=${spider.workspace}\/chromedriver<\/p>\n\n\n\n<p>selenium.driver.firefox=${spider.workspace}\/geckodriver<\/p>\n\n\n\n<p><strong>\u589e\u52a0<\/strong>\uff1aspider-flow-web\/src\/main\/resources\/application-prod.properties&nbsp; \uff08\u7565\uff09<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-0200a3fa5fb3038333c4d63deffd3f25\"><strong>\u914d\u7f6eSpiderApplication\u8fd0\u884c\u9009\u9879<\/strong>\uff0c\u589e\u52a0&#8221;Add VM options&#8221;\uff0c\u6dfb\u52a0\u8fd0\u884c\u65f6\u53c2\u6570\uff1a&nbsp;&#8211;add-opens java.base\/java.lang=ALL-UNNAMED<\/p>\n\n\n\n<p><strong>spider-flow\u5b89\u88c5\uff1a<\/strong><\/p>\n\n\n\n<p>$ mkdir \/data\/spider\/<\/p>\n\n\n\n<p>$ cd \/data\/spider\/<\/p>\n\n\n\n<p>$ wget <a href=\"https:\/\/chromedriver.storage.googleapis.com\/114.0.5735.90\/chromedriver_linux64.zip\">https:\/\/chromedriver.storage.googleapis.com\/124.0.6367.91\/chromedriver_linux64.zip<\/a><\/p>\n\n\n\n<p>$ unzip chromedriver_linux64.zip<\/p>\n\n\n\n<p>$ wget <a href=\"https:\/\/github.com\/mozilla\/geckodriver\/releases\/download\/v0.34.0\/geckodriver-v0.34.0-linux64.tar.gz\">https:\/\/github.com\/mozilla\/geckodriver\/releases\/download\/v0.34.0\/geckodriver-v0.34.0-linux64.tar.gz<\/a><\/p>\n\n\n\n<p>$ tar -zxvf geckodriver-v0.34.0-linux64.tar.gz<\/p>\n\n\n\n<p>$ cd ~<\/p>\n\n\n\n<p>$ mkdir spiderflow\/<\/p>\n\n\n\n<p>$ cd spiderflow<\/p>\n\n\n\n<p>$ \u628aspider-flow.jar\u62f7\u8d1d\u5230\u672c\u76ee\u5f55\u3002<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color has-link-color wp-elements-1c41d80dfd7fbbf6f292b99247770253\">$ \u5230mysql\u91cc\u9762\u6267\u884cspiderflow\u7684db\u76ee\u5f55\u4e0b\u7684spiderflow.sql\uff0c\u5efa\u7acbspiderflow\u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<p><strong>\u8fd0\u884c\uff1a<\/strong><\/p>\n\n\n\n<p>$ nohup java -Xmn64m -Xms256m -Xmx256m &#8211;add-opens java.base\/java.lang=ALL-UNNAMED -jar spider-flow.jar\u00a0 &#8211;spring.profiles.active=test \/dev\/null 2>&amp;1 &amp;<\/p>\n\n\n\n<p>\u751f\u6210\u7684log\u4f4d\u7f6e\uff08\u914d\u7f6e\u6587\u4ef6\u7684&#8221;spider.workspace&#8221;\u6240\u8bbe\u7f6e\u7684\u76ee\u5f55\u4e0b\uff09\uff1a<\/p>\n\n\n\n<p>$ ll \/data\/spider\/logs\/<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>\u8bbf\u95eeWEB\uff1a<\/strong><\/p>\n\n\n\n<p>\u672c\u673a\u8bbf\u95ee\uff1a http:\/\/127.0.0.1:8088<\/p>\n\n\n\n<p><strong>\u4f7f\u7528\uff1a<\/strong><\/p>\n\n\n\n<p>\u6559\u7a0b\uff1a&nbsp;<a href=\"https:\/\/www.bookstack.cn\/read\/spiderflow-0.5.0\/%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.md\">https:\/\/www.bookstack.cn\/read\/spiderflow-0.5.0\/%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.md<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53d8\u91cf\u8282\u70b9\u5b9a\u4e49\u7684\u53d8\u91cf\u5168\u5c40\u53ef\u7528\u3002<\/li>\n\n\n\n<li>\u722c\u53d6\u8282\u70b9\u53ef\u4ee5\u9009\u62e9\u81ea\u52a8cookie\uff0c\u8fd9\u6837\u767b\u5f55\u540e\u7528cookie\u505a\u9274\u6743\u7684\u7f51\u7ad9\u540e\u7eed\u76f4\u63a5\u722c\u6570\u636e\u5373\u53ef\uff0c\u4e0d\u7528\u518d\u624b\u5de5\u8bbe\u7f6ecookie\u4e86\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u6709\u590d\u6742\u9a8c\u8bc1\u7801\u767b\u5f55\u7684\u7f51\u7ad9\uff0c\u53ef\u4ee5\u624b\u5de5\u5148\u628acookie\u5b58\u4e0b\u6765\uff0c\u7136\u540e\u7528\u52a0\u5168\u5c40cookie\u7684\u65b9\u5f0f\u8bbe\u7f6e\u597dcookie\u5373\u53ef\u3002<\/li>\n\n\n\n<li>\u4e0d\u7528cookie\u7684\u7f51\u7ad9\uff0c\u5219\u8981\u624b\u5de5\u8bbe\u7f6e\u9274\u6743header\u6216\u8005token\u6216\u8005parameter\u3002<\/li>\n\n\n\n<li>\u9875\u9762\u5207\u6362\u65f6\uff0c\u9700\u8981\u7528resp.sleep\u7b49\u5f85\u4e00\u4f1a\uff0c\u8ba9resp\u5237\u65b0\u3002<\/li>\n\n\n\n<li>\u7ffb\u9875\u8f93\u51fa\u548c\u6267\u884csql\u6700\u597d\u4e5fsleep\u4e00\u4e0b\uff0c\u4e0d\u7136\u6570\u636e\u4f1a\u91cd\u590d\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u6570\u636e\u4ecexhttprequst\u8bf7\u6c42\u7684\u7f51\u7ad9\uff0c\u76f4\u63a5\u6d4f\u89c8\u5668\u68c0\u67e5\u6a21\u5f0f\u4e0b\u627e\u5230\u8be5\u8bf7\u6c42\uff0c\u7136\u540e\u722c\u53d6\uff0c\u8fd9\u6837\u5c31\u4e0d\u7528\u6293xhttprequest\u6240\u5728\u7684\u7f51\u9875\uff0c\u90a3\u6837\u53cd\u800c\u53ef\u80fd\u6293\u4e0d\u5230\u3002<\/li>\n\n\n\n<li>SQL\u8282\u70b9\u53ef\u4ee5\u652f\u6301\u6279\u91cf\u63d2\u5165\uff0c\u53c2\u6570\u4f7f\u7528List\u6216Array\u5373\u53ef\uff0c\u4ee5\u6700\u957f\u7684List\u6216Array\u4e3a\u57fa\u51c6\uff0c\u751f\u6210sql\u8bed\u53e5\u65f6\u5176\u4ed6\u957f\u5ea6\u4e0d\u591f\u7684\u91cd\u590d\u6700\u540e\u4e00\u4e2a\u503c\uff0c\u975eList\u3001Array\u7684\u53c2\u6570\u4e5f\u662f\u5168\u90e8\u91cd\u590d\u3002<\/li>\n\n\n\n<li>\u8981\u4f7f\u7528selenium\u63d2\u4ef6\uff0c\u5fc5\u987b\u8fd0\u884c\u5728\u5b89\u88c5\u6709chrome\u6216firefox\u7684\u7535\u8111\u4e0a(\u5fc5\u987bchromedriver\u3001selenium-devtools-vXXX\u548cchrome\u4e3b\u7248\u672c\u4e00\u81f4\u90fd\u4e3aXXX\uff0c\u5426\u5219CDP\u4e0d\u4e00\u81f4\u6ca1\u6cd5\u7528)\uff0c\u6240\u4ee5\u65e0\u754c\u9762\u7684server\u4e0a\u8fd0\u884c\u4e0d\u4e86\u3002<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>spider flow\u722c\u866b\u7684\u5b89\u88c5\u548c\u4f7f\u7528<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63,186],"tags":[908,907,905,909,906],"class_list":["post-1163","post","type-post","status-publish","format-standard","hentry","category-63","category-186","tag-selenium","tag-spider","tag-spider-flow","tag-909","tag-906"],"views":2233,"_links":{"self":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1163"}],"version-history":[{"count":1,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1163\/revisions"}],"predecessor-version":[{"id":1164,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/1163\/revisions\/1164"}],"wp:attachment":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1163"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}